Android使用Bundle进行数据传递分析
16lz
2021-01-23
Android使用Intent.putSerializable()进行数据传递,或者使用Bundle进行数据传递,实质上都是进行的Serializable数据的操作,说白了都是传递的原数据的一份拷贝,因此通过对象的传递来控制Android应用是不现实的
见下面的代码
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import com.feng.androidbundle.activity.GetBundleActivity;import com.feng.androidbundle.bean.DataBean;public class AndroidbundleActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 定义一个Bundle按键 Button gotoBundle = (Button)findViewById(R.id.btnBundle); // 设置监听事件 gotoBundle.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setClass(getApplicationContext(), GetBundleActivity.class);DataBean temp = new DataBean();temp.setID(1);temp.setName("张三");temp.setAddress("xx市xx路xx号");temp.setMoblie("159xxxxxxxx");Log.i("AndroidbundleActivity", "新建时候的地址" + temp);Bundle bundle = new Bundle();bundle.putSerializable("UserInfo", temp);// 设置intentintent.putExtras(bundle);// 发送ActivitygetApplicationContext().startActivity(intent);} }); }}在另外一个Activity中将数据取出来
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import com.feng.androidbundle.R;import com.feng.androidbundle.bean.DataBean;public class GetBundleActivity extends Activity {@Override public void onCreate(Bundle savedInstanceState) {// 初始化BundleActivity super.onCreate(savedInstanceState); setContentView(R.layout.bundle); // 获取意图 Intent intent = getIntent(); Bundle bundle = intent.getExtras(); // 获取对象 DataBean temp = (DataBean) bundle.get("UserInfo");Log.i("GetBundleActivity", "收到的地址" + temp); }}日志的打印结果
12-19 02:42:49.356: I/AndroidbundleActivity(230): 新建时候的地址com.feng.androidbundle.bean.DataBean@44c24968
12-19 02:42:49.417: I/GetBundleActivity(230): 收到的地址com.feng.androidbundle.bean.DataBean@44c33528
由上面的日志可以看出,使用Bundle进行数据的传递,实质上是拷贝的传递
更多相关文章
- Android里监视数据库的变化 registerContentObserver 接口
- android 之json对象解析并展示(含json解析源码)
- Android下的数据储存方式(三)
- android中将数据写入手机内存和sdcard中的文件
- Android settings.db数据库中添加一条新的默认配置项
- Android之解析Json数据
- Notification中Intent携带数据重复问题