gpt4 book ai didi

java - Android服务和asynctask通信

转载 作者:行者123 更新时间:2023-12-02 05:52:14 25 4
gpt4 key购买 nike

我在尝试找出遵循 Android 最佳实践完成简单应用程序的最佳方法时遇到问题。这是场景:

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

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

3) 异步任务使用其进度和状态更新服务中的状态 HashMap

4) 还有一个绑定(bind)到服务的 Activity ,用于显示服务中当前正在运行的任务及其进度的列表。我们的想法是,即使此 Activity 关闭,服务也将继续运行任务,并且当 Activity 重新打开时,将显示刷新的统计信息。

我在 3 和 4 中遇到问题。从 AsyncTask 的 onProgressUpdate 方法内与服务通信的最佳方式是什么,同时更新列表 Activity (如果已打开),如果未打开则更简单,只需更新服务跟踪 map ,当 Activity 打开时,它将读取它们并更新。

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

最佳答案

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

不用我复制和粘贴大量代码,请查看 Vogella 的服务教程,尤其是练习(7.练习:使用服务和服务通信),可以在此处找到

www.vogella.com/tutorials/AndroidServices/article.html#tutorial_intentservice

在练习中,您将寻找 DownloadService.publishResults(...) 方法,该方法将广播从服务发送到正在监听更新的广播接收器,并使用MainActivity 中的 BroadcastReceiver,处理来自服务的更新。

关于java - Android服务和asynctask通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23440323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com