【问题标题】:How to stop service after AsyncTask finished?AsyncTask 完成后如何停止服务?
【发布时间】:2010-06-26 16:05:40
【问题描述】:

我有一个服务,它请求另一个启动 AsyncTask 的类

服务->天气类->执行方法->Asynctask->执行

这是在服务中启动的

new Weather(this).execute(); // the execute is a method of the class, not of the AsyncTask

如何在 Service 中检测到 AsyncTask 已完成,以便调用 stopSelf?

【问题讨论】:

  • 我没有完整的答案,因此只是评论。您不能在您的服务中使用 IBinder 并在您的 AsyncTask 的 onPostExecute() 中发送消息。 developer.android.com/reference/android/app/…
  • 我的服务没有使用 IBinder 的东西。

标签: android service android-asynctask


【解决方案1】:

在这种情况下,您可以使用stopService(intent)

【讨论】:

  • 优秀。来自@Doc 如果服务没有运行,什么都不会发生。
【解决方案2】:

目前在我们的应用程序中采用的方法是针对android.app.Service 注册一个BroadcastReceiver,该android.app.Service 设置为侦听从生成的底层AsyncTask#onPostExecute 触发的广播事件。这在我们的场景中是有利的,因为我们的服务生成了三个 AsyncTasks,并且我们希望在所有三个 AsyncTasks 都完成后停止父服务,即我们的服务级别有三个命中 BroadcastReceiver

在我偶然发现这个问题很久之后,我想我会在这里添加这个,但希望它可以帮助其他人......

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多