繁体   English   中英

用户关闭应用程序时如何保持AsyncTask

[英]How to Keep AsyncTask when user closes app

这是我的主要活动:

   @Override
public void onBackPressed() {

    super.onBackPressed();
    finish();
    moveTaskToBack(true);
    System.exit(0);
}

我希望AsyncTask在用户关闭应用程序后继续在后台将数据放入服务器中。

我希望AsyncTask在用户关闭应用程序后继续在后台将数据放入服务器中。

AsyncTask的目的不是执行超出Activity生命周期范围的后台任务。 从线程池中分配后台线程后,它希望在任务结束后将其返回。 即,您不能使用所需时间不确定的AsyncTask

您正在寻找的是Android 服务

如果我们有服务,为什么还要使用AsyncTask?

好吧,举例来说,您需要单击一个ButtonActivity下载图像/歌曲,或者您需要执行需要花费一些时间才能完成其执行的任务。 从Main线程(又名UI线程)执行这些任务是一种不好的方法,会使您的应用程序运行缓慢,并最终导致ANR 因此,这些任务要从单独的线程异步处理,以保持应用程序平稳运行。

服务是解决方案的一部分,但请注意,服务在前台线程上运行。 您可能想从服务运行AsyncTask,以确保其继续在后台线程上运行。

就个人而言,我会建议不要赞成的使用服务的jobscheduler或者如果你需要支持低于API 21设备,Evernote的的JobManager (这也有点更容易使用)。 这些将帮助您安排在适当的时间进行后台操作,以最大程度地减少电池消耗或设备空闲时的消耗。 使用设备资源时,成为好公民很重要。

您必须检查服务或/和IntentServices

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM