领导安排的一个界面添加,显示坐标点和位置,为了不再请求网络,选择传递数据,当时想的是再开启一个Activity,进行显示,由于数据的不确定每个人的坐标点有多少,所以在显示的时候出现的无法打开Activity的情况。为了总结学习,从网络收集进行问题汇总。
借鉴博客:http://blog.csdn.net/wave_1102/article/details/51067106
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0204/2410.html
http://www.jianshu.com/p/a60b609ec7e7
传递大数据问题:
Parcel
objects stored in the Binder transaction buffe
”,这表明实际上底层parcel对象在不同activity直接传递过程中保存在一个叫做“ Binder transaction buffe”的地方,既然是缓冲区,肯定有大小限制。
常用的跳转传递数据有:
1.intent.putExtra(key,value); 获取数据:intent.getStringExtra(key);
2.bundle.putString(key,value); 获取数据:bundle = this.getIntent().getExtras(); bundle.getString(key);
intent.putExtras(bundle);
3.startActivityForResult(),这个和上面基本一样
那么在传递大一点数据的情况:
比如传递list,发现都是arraylist
发现parcelable 和 serializable这两种list数据
区别:
1.serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可。Serializable 接口是一种标识接口(marker interface),这意味着无需实现方法,Java便会对这个对象进行高效的序列化操作。这种方法的缺点是使用了反射,序列化的过程较慢。这种机制会在序列化的时候创建许多的临时对象,容易触发垃圾回收。
2.根据 google 工程师的说法,原因之一就是我们已经清楚地知道了序列化的过程,而不需要使用反射来推断。同时为了更快地进行序列化,对象的代码也需要高度优化。