目前在写代码的时候,简单的类型都是通过intent传递的,但是一些复杂的对象,是通过静态变量static保存读取的。 有没有更好的方式?
我觉得使用BroadcastReceiver挺好的,它是一种全局的监听器,因此它可以非常方便地实现系统不同组件之间的通信。
http://www.cnblogs.com/tyjsjl/p/3361740.html
http://blog.163.com/gz_wyue/blog/static/5647586420138109311349/
http://www.cnblogs.com/ygm900/p/3521659.html
复杂的对象,我也不会
一般对象可以这样:
传送数据的界面
Intent intent = new Intent(context,ResultActivityUser.class);
Bundle bundle = new Bundle();
User u= new User();
u.setId(12);
u.setUsername("zhang");
u.setPassword("123456");
bundle.putSerializable("u",u); //封装数据集合
intent.putExtras(bundle);
startActivity(intent);
接收对象的界面
User u = (user)getIntent(0.getSerializableExtra("u");
int id = u.getId();
String name = u.getUsername();
第一种方式: intent传递 基本数据类型的数据,包含数据的对象(序列化)
第二种方式: 自定义个application,在application中保存数据。缺点:可能被系统回收
第三种方式: 磁盘缓存(数据库,文件等),界面a写入数据到磁盘,界面b读取数据(最好异步操作)(个人认为是最安全的数据传递方式)
你有没有试过EventBus传值,这个很好用的
http://www.codeceo.com/article/eventbus-3-0-framework.html
可以借鉴以下这篇文章
我觉得,你需要知道的是,数据的传递都是靠01这样的序列化的数据来传递的,包括intent,还是网络什么的,你想要传递复杂的数据且又不希望数据被序列化,那么你只能考虑自定义application了,当然我觉得自定义application中保存的数据在各个组件之间那不能叫数据的传递了。
传递对象最好进行序列化,或者在维护application中维护一个对象集合,随取随用。存在本地也是一种方法!看楼主采用那个?
也可以通过EventBus传值是非常方便的