• android bundle 对象 序列化


    Android使用Intent.putSerializable()进行数据传递,或者使用Bundle进行数据传递,实质上都是进行的Serializable数据的操作,说白了都是传递的原数据的一份拷贝,因此通过对象的传递来控制Android应用是不现实的

    源代码如下了:

     1  import android.app.Activity;  
     2 import android.content.Intent;  
     3  import android.os.Bundle;  
     4  import android.util.Log;  
     5  import android.view.View;  
     6  import android.widget.Button;  
     7  import com.feng.androidbundle.activity.GetBundleActivity;  
     8 
     9  import com.feng.androidbundle.bean.DataBean;  
    10 
    11   
    12 public class AndroidbundleActivity extends Activity {  
    13     /** Called when the activity is first created. */  
    14     @Override  
    15     public void onCreate(Bundle savedInstanceState) {  
    16         super.onCreate(savedInstanceState);  
    17         setContentView(R.layout.main);  
    18           
    19         // 定义一个Bundle按键  
    20         Button gotoBundle = (Button)findViewById(R.id.btnBundle);  
    21         // 设置监听事件  
    22         gotoBundle.setOnClickListener(new View.OnClickListener(){  
    23   
    24             @Override  
    25             public void onClick(View v) {  
    26                 Intent intent = new Intent();  
    27                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    28                 intent.setClass(getApplicationContext(), GetBundleActivity.class);  
    29                   
    30                 DataBean temp  = new DataBean();  
    31                 temp.setID(1);  
    32                 temp.setName("曾驰文");  
    33                 temp.setAddress("xx市xx路xx号");  
    34                 temp.setMoblie("159xxxxxxxx");  
    35                   
    36 Log.i("AndroidbundleActivity", "新建时候的地址" + temp);     
    37                   
    38                 Bundle bundle = new Bundle();  
    39                 bundle.putSerializable("UserInfo", temp);  
    40                   
    41                 // 设置intent  
    42                 intent.putExtras(bundle);  
    43                   
    44                 // 发送Activity  
    45                 getApplicationContext().startActivity(intent);  
    46             }  
    47               
    48         });  
    49     }  
    50 }  

     在另外一个Activity中将数据取出来 相应的源代码如下:

     1  import android.app.Activity;  
     2  import android.content.Intent;  
     3  import android.os.Bundle;  
     4  import android.util.Log;  
     5 import com.feng.androidbundle.R;  
     6  import com.feng.androidbundle.bean.DataBean;  
     7  public class GetBundleActivity extends Activity {  
     8 
     9       
    10     @Override  
    11     public void onCreate(Bundle savedInstanceState) {  
    12         // 初始化BundleActivity  
    13         super.onCreate(savedInstanceState);  
    14         setContentView(R.layout.bundle);  
    15           
    16         // 获取意图  
    17         Intent intent = getIntent();  
    18         Bundle bundle = intent.getExtras();  
    19           
    20         // 获取对象  
    21         DataBean temp = (DataBean) bundle.get("UserInfo");  
    22 Log.i("GetBundleActivity", "收到的地址" + temp);  
    23     }  
    24 }  

    日志的打印结果

    12-19 02:42:49.356: I/AndroidbundleActivity(230): 新建时候的地址com.zcw.androidbundle.bean.DataBean@44c24968
    12-19 02:42:49.417: I/GetBundleActivity(230): 收到的地址com.zcw.androidbundle.bean.DataBean@44c33528

    由上面的日志可以看出,使用Bundle进行数据的传递,实现了serialzable接口实质上是拷贝的传递。

  • 相关阅读:
    并发与并行
    cgi fastcgi
    阻塞和非阻塞,同步和异步
    PHP常量
    nginx入门(4):FastCGI代理
    fastjson实体转json顺序不一致问题
    vue在一个方法执行完后再执行另一个方法
    如何搭建一个vue项目(完整步骤)
    什么是Node.js?
    Android学习记录---在子线程中使用组件ui会报错
  • 原文地址:https://www.cnblogs.com/manuosex/p/3933003.html
Copyright © 2020-2023  润新知