【问题标题】:Android - kill an async task between activitiesAndroid - 杀死活动之间的异步任务
【发布时间】:2016-05-10 19:17:34
【问题描述】:

我对异步任务有疑问。在我的应用程序中,我有两个活动。第一个活动作为接收数据的异步任务,在第二个活动中,我有其他异步任务也接收数据,还有另一个异步任务将发送数据。问题是:当我转到第二个活动并发送数据时,我希望第二个活动的异步任务接收该数据,但接收的是第一个活动的异步任务。

当我从一个活动切换到另一个活动时,任何人都可以帮助我找到终止异步任务的方法吗?

【问题讨论】:

    标签: android sockets android-asynctask


    【解决方案1】:

    来自运行代码的示例。假设您有一个名为 loadApps 的异步任务对象(在我的例子中)。在活动之间切换时,调用:

     if (loadApps != null && loadApps.getStatus() == AsyncTask.Status.RUNNING) {
            loadApps.cancel(true);            
        }
    

    并且在 doInBackground 方法中的异步任务类中,您需要在某个时间点(在开始时或迭代之间是否存在循环)检查 boolean isCanceled()

    【讨论】:

    • 非常感谢您的回答。另一个疑问,在检查了 isCanceled() 之后,它应该返回什么。可以举个例子吗
    • 好吧,就我而言,它打破了循环。在你的情况下..你需要找到一种方法来返回一些东西(无论结果应该是什么......如果是布尔值......返回false..如果是无效......只是返回)。最重要的是要记住,一旦 isCanceled 为真,任务将不会调用 onPostExecute 方法。它将调用 onCancelled 方法。在那里实现你的逻辑。如果您有侦听器,请从那里通知...如果您需要取消进度对话框...从那里开始。这是一个 ui 线程回调。因此,您可以像在 onPostExecute 方法中一样使用 ui 元素。
    【解决方案2】:

    根据我从您的问题中了解到的情况,这些可能会有所帮助。

    How to stop asynctask thread in android?

    http://developer.android.com/reference/android/os/AsyncTask.html(阅读“取消任务”部分)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多