3

我有一个应用程序使用服务每x秒创建一个自定义对象(MyObject)的ArrayList。然后我希望我的Activity获得这个ArrayList。如何发送捆绑中的自定义对象的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)是否有一个不同的模型,我应该使用我的服务更新我的活动中的数据可能会或可能不可见?我总是希望我的活动中的数据成为服务中的最新数据。

回答

0

还有另一种应该使用的模型。我问另一个问题提供了答案:

Suppress notifications from a service if activity is running

至于#1,你可以得到它周围由刚刚从ArrayList中移除申报仿制药,并在需要的地方铸造适当。我知道这是有效的,因为这是基于另一个问题重构之前我所做的。

0

如果演员出现问题,就把它放好,不要投它,错误就会消失。

1

我有完全相同的问题,虽然仍然与Parcelable混淆,但我发现静态变量对于任务来说并不是一个坏主意。

您可以简单地创建一个静态字段

public static ArrayList<MyObject> myObjects = .. 

,并通过MyRefActivity.myObjects

从其他地方使用它,我不知道什么公共静态变量与活动的应用程序上下文暗示。如果您也有关于这个或这种方法的性能方面的疑问,请参阅:

干杯。

相关问题