Android使用Bundle进行数据传递分析
2011-12-19 10:49
585 查看
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进行数据的传递,实质上是拷贝的传递
见下面的代码
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进行数据的传递,实质上是拷贝的传递
相关文章推荐
- Android使用Bundle进行数据传递分析
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递 Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递
- Android项目-智慧北京:02(三种技术设计主页面及源码分析点击事件传递的机制及Json数据传递的使用)
- 使用Bundle在Activity之间进行数据传递
- Android——通过Intent,Bundle在activity间进行数据传递
- Android 使用Bundle在Activity间传递数据
- android使用Intent传递数据 2 种方式(Intent和Bundle)
- Android两个Activity跳转并使用Bundle传递数据
- 使用Fiddler对Android手机的应用数据进行抓包分析
- Android--从零单排系列(7)--广播的使用和利用广播进行数据的传递
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- Android Fragment之间参数传递通过使用bundle进行参数传递
- Android之使用Bundle传递数据类型