这是我的主要活动:
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
moveTaskToBack(true);
System.exit(0);
}
我希望AsyncTask
在用户关闭应用后继续在后台将数据放入我的服务器中。
答案 0 :(得分:2)
我希望AsyncTask在用户关闭应用后继续在后台将数据放入我的服务器。
AsyncTask
的目的是不来执行超出Activity
生命周期范围的后台任务。从线程池分配后台线程时,它希望在任务结束后返回它。即你不能使用所需时间不确定的AsyncTask
。
你在寻找的内容是Android中的Services。
如果我们有服务,为什么甚至使用AsyncTask?
嗯,比如说你需要在点击Activity
时从Button
下载图像/歌曲,或者你需要执行一项需要一些时间才能完成执行的任务。从主线程(也称为UI线程)执行这些任务是一种糟糕的方法,会使您的应用程序变得迟缓,最终会导致ANR。因此,这些任务将从一个单独的线程异步处理,以保持应用程序的顺利进行。
答案 1 :(得分:1)
服务是解决方案的一部分,但请注意,服务在前台线程上运行。您可能希望从服务运行AsyncTask以确保它继续在后台线程上运行。
就我个人而言,我建议反对使用服务支持JobScheduler,或者如果您需要支持API 21以下的设备,Evernote' JobManager(这也有点容易使用)。这些将帮助您在适当的时间安排后台操作,以最大限度地减少电池使用或设备闲置时。在使用设备的资源时,做一个好公民是很重要的。
答案 2 :(得分:0)
您必须检查服务或/和IntentServices