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接口实质上是拷贝的传递。