在服务和活动之间共享数据

时间:2011-09-26 13:11:29

标签: android service android-contentprovider android-arrayadapter

我有一个带有自定义ArrayAdapter的ListView,它显示来自ArrayList的订单。这些订单应该与我的服务器同步。我有一个API,我要求新订单,如果有,我得到订单的XML。动态更新listView的最佳方法是什么?我不想使用SQLite来存储订单,因为只应该显示最后十个。使用ContentProvider,我无法存储自定义Order对象。如果我将ArrayList包装到单个类中并在服务中以及在ArrayAdapter的Activity类中使用它,则ListView不会动态更新(可能是因为arrayAdapter会生成arraylist的副本?)。非常感谢你。

菲利普

2 个答案:

答案 0 :(得分:1)

使用IntentBundle

答案 1 :(得分:1)

我不确定您对ArrayAdapter没有更新的意思,但我可以为您提供我们公司使用的解决方案。

我有一个DataMaanger,它是Activities和Networking或SQLite之间的桥梁。 dataMaanger将其数据保存在内存中,因此它不在数据库中或磁盘上。它的缺点是,如果您的应用程序因内存不足而被杀死并重建自身,则dataManager将为空,这将为您提供两个选项,无论是在每次Activitie死亡还是主要任务的活动死亡时,您将序列化DataManager的数据,或者您不依赖于任何先前的数据,只需再次进行请求并更新数据管理器。 我使用广播来通知我的活动。

要访问DataManager,我不使用sigletone。我使用Application对象,你可以扩展它,并在Manifest.xml中给它标记名称,然后用它来代替regualr Application对象。

您可以稍后使用Activity类中的getApplication()方法访问它。