Java Android服务与异步任务通信

Java Android服务与异步任务通信,java,android,service,android-asynctask,Java,Android,Service,Android Asynctask,我很难按照Android的最佳实践找出完成一个简单应用程序的最佳方法。以下是场景: 1) 我有一个活动,用户输入一些内容,然后将其发送到后台服务 2) 后台服务对输入执行一些检查,并生成一个新的AsyncTask来处理输入 3) asynctask使用其进度和状态更新服务中的状态Hashmap 4) 第二个活动绑定到服务,以显示服务中当前正在运行的任务及其进度的列表。其思想是,即使此活动已关闭,服务仍将继续运行任务,并且当活动重新打开时,将显示刷新的统计信息 我在第三和第四部分有问题。从Asyn

我很难按照Android的最佳实践找出完成一个简单应用程序的最佳方法。以下是场景:

1) 我有一个活动,用户输入一些内容,然后将其发送到后台服务

2) 后台服务对输入执行一些检查,并生成一个新的AsyncTask来处理输入

3) asynctask使用其进度和状态更新服务中的状态Hashmap

4) 第二个活动绑定到服务,以显示服务中当前正在运行的任务及其进度的列表。其思想是,即使此活动已关闭,服务仍将继续运行任务,并且当活动重新打开时,将显示刷新的统计信息

我在第三和第四部分有问题。从AsyncTask的onProgressUpdate方法中与服务通信的最佳方式是什么,如果它打开,则更新列表活动(如果它没有打开它更简单),只需更新服务跟踪映射,当活动打开时,它将读取并更新。


我不确定处理这类“事件”的标准方法是什么。您是否必须使用广播侦听器和订阅者,或者为了这个简单的目的使用广播侦听器和订阅者太多?

如果您想在服务和活动之间通信,您可以在
AsyncTask.onProgressUpdate
方法(或者在
AsyncTask.onPostExecute(Result)
方法中)广播来自服务的更新并在活动中使用广播接收器收听更新

与其复制和粘贴一个彩票代码,不如看看Vogella关于服务的教程,特别是练习(7.练习:使用服务和服务通信),可以在这里找到


在本练习中,您将查找
DownloadService.publishResults(…)
方法,该方法将广播从服务发送到正在侦听更新的broadcastreceiver,以及在MainActivity中使用broadcastreceiver,它处理来自服务的更新。

我已经完成了一些您熟悉的任务。我创建了一个服务,该服务向服务器请求数据,并响应某个活动。当我的android应用程序在
ScheduledThreadPoolExecutor
中运行时,我正在调用一个服务,它每10秒调用一次该服务。而
AynsTask
正在
Service.java
类中调用onStartCommand方法。但是我的服务只启动一次,并且只有一个实例,活动在启动时通过绑定器绑定到它。您是如何在Asynctak和服务之间进行通信的?我没有将我的服务与任何活动绑定。我在onStart命令方法中执行
AynsTask
,然后使用
SharedReference提交该数据
n将其用于将来的使用。