嘿伙计们,我只能找到1个帖子,而且它并没有真正回答我的问题,所以我要求自己。
我的应用程序正在下载并解析rss文件,我显然决定在后台任务中执行此操作。我选择了AsyncTask,我试图让它开始下载,然后调出rss feed的列表视图。从那里我希望来自其他活动的AsyncTask在加载它时将现在解析的信息传递给新的列表视图活动。我无法弄清楚如何将我的AsyncTask对象的引用传递给我的新活动而不实现parcelable并将其添加到bundle中,这对我来说是一个巨大的混乱。有更好的方法吗?
我也看到其他人推荐开始服务。这样做有什么好处?谢谢!
〜斯科特
答案 0 :(得分:9)
这正是使用服务的情况。 AsyncTask用于在UI线程上执行操作(实际上是一个便利类)。
你正在做的事情应该继续服务,因为你不一定关心UI线程,因为你不会在同一个活动中显示。
以下是您应该如何做到这一点:
1)创建服务并处理RSS提要 2)在服务中,您应该使用ContentResolver将结果存储在数据库中 3)让ListActivity中的ListAdapter监听与服务更新相同的CONTENT_URI上的更改。这将在添加或删除行时自动更新您的列表,而不会有任何ANR,因为它全部在后台线程上
其他一些优点是您可以在后台同步而无需打开UI。这对于RSS应用程序非常有用,因为您并不总是希望等待用户启动同步。
答案 1 :(得分:0)
调用异步任务并在静态ArrayList中下载RSS源,并使用该arrayList通过自定义适配器更新第一个活动。然后在需要此Rss源的其他类中执行相同的操作。