【发布时间】:2014-05-03 04:37:43
【问题描述】:
我在尝试找出遵循 Android 最佳实践来完成简单应用的最佳方法时遇到了问题。这是场景:
1) 我有一个用户输入内容的活动,然后将其发送到后台服务
2) 后台服务对输入执行一些检查并生成一个新的 AsyncTask 来处理输入。
3) asynctask 使用其进度和状态更新服务中的 Status Hashmap
4) 还有一个绑定到服务的活动,以显示服务中当前正在运行的任务及其进度的列表。这个想法是,即使此活动已关闭,服务仍将继续运行任务,并且当活动重新打开时,将显示刷新的统计信息。
我在 3 和 4 中遇到问题。从 AsyncTask 的 onProgressUpdate 方法中与服务通信的最佳方式是什么,同时更新列表活动(如果它打开),如果它没有打开它更简单,只需更新服务跟踪地图,当活动打开时,它会读取它们并更新。
我不确定处理此类“事件”的标准方法是什么。为了这个简单的目的,您是否必须使用广播侦听器和订阅者,或者它太多了?
【问题讨论】:
-
我已经完成了一些对您的问题很熟悉的任务。我创建了一个服务,它向服务器请求数据并响应一个活动。当我的 android 应用程序在
ScheduledThreadPoolExecutor中运行时,我正在调用一个服务,它每 10 秒调用一次该服务。并且AynsTask正在调用Service.java类中的 onStartCommand 方法。 -
但是我的服务只启动一次,并且只有一个实例,并且活动在启动时通过活页夹绑定到它。您是如何在 AsyncTaks 和服务之间进行通信的?
-
我没有将我的服务与任何活动绑定。我在 onStartCommand 方法中执行
AynsTask,然后 commit 带有SharedPreference的数据 n 使用它以备将来使用。
标签: java android service android-asynctask