如何进行Service和AsyncTask通信

时间:2017-07-12 23:04:48

标签: java android android-asynctask

我有这个问题: 我有一个绑定到服务的主要活动, 此外,该主要活动可以调用一个类(AsyncTask),该类是连接到服务器并等待数据的客户端。

我试图将类(AsyncTask)客户端绑定到服务, 但我不知道这是否可能 或者我是否必须将数据返回主活动,以便主要活动可以将其发送到服务?

我可以在主类

中完成此操作
Intent intent = new Intent(getApplication(), ChatHeadService.class);
startService(intent);
bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);

但是如何在类(AsyncTask)客户端中实现它?

2 个答案:

答案 0 :(得分:0)

您可以通过这种方式将异步任务中的数据返回到主要活动。

protected void onProgressUpdate(Integer... progress) {
    setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
    showDialog("Downloaded " + result + " bytes");
}

然后,您可以通过调用startService(...)并在intent中传递数据,将该数据从活动传递到服务。

多次调用startService(...)是安全的,不会启动多个实例。

<强> P.S。 在Android中运行服务器并不适合我。 Android设备只能用作客户端。

答案 1 :(得分:0)

我认为您可以像在活动中一样从doInBackground()调用服务。有关类似问题的解决方案,请参阅this Stack Overflow post