【问题标题】:Can the OS stop an AsyncTask if it is taking too long?如果 AsyncTask 花费的时间太长,操作系统可以停止它吗?
【发布时间】:2019-03-16 18:21:06
【问题描述】:

如果我在我的一项服务中执行异步任务,是否会出现 android 出于某种原因停止异步任务的情况,例如当它花费太长时间时?

【问题讨论】:

  • @IanDeLaney 感谢您的回复,但这对我没有帮助。我不想取消异步任务;在任何情况下都可以被安卓操作系统本身阻止吗?
  • 将服务设为单例,可由您的活动访问。这样你就可以访问你的异步任务,在服务中,做任何你想做的事情
  • This post 似乎表明 AsyncTask 可以运行很长时间。尽管如此,我认为它们可以像进程的所有其他部分一样在低内存条件下被杀死,因此它们不是不朽后台线程的门票
  • 设置你自己的条件,比如 url 连接的 setconnectiontimeout,然后在那个条件下取消你的异步任务。

标签: android android-asynctask android-service


【解决方案1】:

如果您的任务没有得到任何响应,您可以致电:

asyncTask.cancel(true);

然后在您的 doInBackground() 方法中,您需要在尝试使用回调数据之前检查它是否被取消:

if (isCancelled())

[编辑 1] 如果您不想取消它,并且想知道操作系统是否可以停止您的任务,答案是肯定的。如果 Android 操作系统认为其他东西比您的应用更需要它,特别是当您的应用不在前台时,它可以阻止您的应用使用任何资源。

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2017-03-03
    • 2015-03-21
    • 1970-01-01
    • 2018-11-14
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多