Android使用Bundle进行数据传递分析

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(){

			@Override
			public 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);
				
				// 设置intent
				intent.putExtras(bundle);
				
				// 发送Activity
				getApplicationContext().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进行数据的传递,实质上是拷贝的传递






  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值