我有一个应用程序,它使用服务每 x 秒创建一个自定义对象 (MyObject) 的 ArrayList。然后我希望我的 Activity 获得这个 ArrayList。
我目前计划让服务在每次完成数据查询时向活动处理程序发送一条消息。我希望发送给处理程序的消息包含 MyObjects 的 ArrayList。
当在 Activity 中构建方法以从消息中获取此 ArrayList 时,我注意到我做不到。
如果我尝试过
msg.getData().getParcelableArrayList("myObjects")
然后我将其传递给预期 ArrayList 的方法不会接受它。如果我尝试投射结果:
(ArrayList<MyObject>)msg.getData().getParcelableArrayList("myObjects")
我收到错误:Cannot cast from ArrayList<Parcelable> to ArrayList<MyObject>
MyObject 实现 Parcelable,并且我已通过让我的活动调用服务上的方法来检索它,成功地将 ArrayList 从我的服务发送到我的活动。不过,我试图避免让我的活动轮询我的服务来获取这些数据。
1) 如何在消息中将包内的 ArrayList 发送给处理程序?
2)我是否应该使用不同的模型来让我的服务更新我的活动中可能可见或不可见的数据?我始终希望我的活动中的数据是来自服务的最新数据。
我有完全相同的问题,同时仍在烦恼Parcelable
,我发现静态变量对于这项任务来说并不是一个坏主意。
您可以简单地创建一个静态字段
public static ArrayList<MyObject> myObjects = ..
并通过其他地方使用它MyRefActivity.myObjects
我不确定公共静态变量在具有活动的应用程序上下文中意味着什么。如果您对此或此方法的性能方面也有疑问,请参阅:
- 在活动之间共享数据的最佳方式是什么? https://stackoverflow.com/questions/4878159/android-whats-the-best-way-to-share-data-between-activities
- 在Android中使用静态变量 https://stackoverflow.com/questions/2475978/using-static-variables-in-android
Cheers.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)