Android使用Parcelable在活动之间发送数据
在我的应用程序中,我想在两个活动之间传递一个Android使用Parcelable在活动之间发送数据,android,android-intent,arraylist,parcelable,Android,Android Intent,Arraylist,Parcelable,在我的应用程序中,我想在两个活动之间传递一个Parcelable对象的ArrayList(或Parcelable[])。在第一个活动中,我调用restservice来获取json数据,然后我使用gson获取Parcelable对象的List,然后使用putParcelableArrayListExtra(…)将列表发送到第二个活动。在列表的大小大约为1000之前,一切都可以正常工作,但超过这个大小,我会得到一个ANR,即使我等待几分钟,应用程序也不会恢复 是否有解决此问题的方法来维护此方法?这是
Parcelable
对象的ArrayList
(或Parcelable[]
)。在第一个活动中,我调用restservice来获取json数据,然后我使用gson获取Parcelable
对象的List
,然后使用putParcelableArrayListExtra(…)
将列表发送到第二个活动。在列表的大小大约为1000之前,一切都可以正常工作,但超过这个大小,我会得到一个ANR,即使我等待几分钟,应用程序也不会恢复
是否有解决此问题的方法来维护此方法?这是由于目标对象的大小限制造成的吗
我知道我可以传递Json字符串,然后在第二个活动中获取列表,但我更喜欢先进行此类操作。首先,确保ANR的源确实是大的可包裹对象,而不是因为您在主线程上执行阻塞操作(即联网) 现在,如果ANR问题确实是由于这些大型对象造成的,那么正确的方法是反序列化对象并将其写入存储,而不是在活动之间传递它。实际上,你正在做的事情会使你的记忆量翻倍 以下是解决此问题的几种方法:
- StrictMode最常用于捕获应用程序主线程上的意外磁盘或网络访问,在主线程中接收UI操作并执行动画。通过保持应用程序的主线程响应,还可以防止向用户显示ANR对话框
- Traceview是一种图形查看器,用于查看Android应用程序创建的日志。通过Traceview,您可以发现应用程序中的错误并测量其性能
- 您可以创建内存快照并使用Eclipse内存分析器对其进行分析