这是一个场景:
该方案运行正常。问题是 - 我可以使用AsyncTask来制作 代码更简洁(如何?)并且在这方面有任何优势 那样的?
或者我应该完全放弃客户端回调 执行远程服务调用,以便在其中返回一些值 的AsyncTask#doInBackground?
答案 0 :(得分:3)
很难说AsyncTask
是否会减少冗长,因为我们不知道您当前实现的详细程度。
对我来说,AsyncTask
意味着我不必担心自己清理线程(例如,将某种杀戮工作发布到LinkedBlockingQueue
我的后台线程正在等待)。它还删除了我用于创建用于Job
的自定义LinkedBlockingQueues
类。并且,它简化了在UI线程上的最终工作。
在您的情况下,使用远程服务,UI线程问题不那么重要,因为活动需要自己处理。
我不知道你的#2和你的最后一段之间有什么区别。在这两种情况下,您的服务都将调用回调对象,该对象将使用runOnUiThread()
之类的东西来安排在UI线程上完成的工作。
AFAIK,使服务执行任何异步工作的唯一两种方法是让客户端知道工作是通过广播Intent
或回调对象完成的。广播Intents
方便但公开(即其他代码可以观看它们)。
我怀疑我在这里可能没什么帮助,但我对你的情景知之甚少,无法提供更多细节。
答案 1 :(得分:0)
我有完全相同的问题:我正在开发一个地图活动,具有'延迟加载'功能(来自网络的xml,解析它,然后使用该解析创建的'items'更新我的地图。 ..)
我想知道实施它的最佳方式是什么......
我想Android-developper-group上的Android贡献者可以找到更准确的答案......