我有一个服务,可以执行常规操作,例如蓝牙发现和发送电子邮件。根据状态,它启动不同的线程,用于连接蓝牙套接字或发送电子邮件。我使用AsyncTask进行电子邮件发送,目前运行良好。
我的问题是:AsyncTask我是在服务停止时从服务完成开始的,还是在AsyncTask完成之前服务没有停止?在正常情况下,服务永远不会停止,但可以在内存不足,电池电量不足或电话关闭时停止服务。我需要在服务停止后恢复操作,并且我想知道如何在服务停止时判断AsyncTask是否已完成。
我已经包含了代码的快照。
public class ScheduledService extends Service {
SendEmailAsyncTask emailTask;
boolean emailSuccess;
@Override
public int onStartCommand(Intent intent, int flag, int startId) {
log.v("onStart()");
super.onStartCommand(intent, flag, startId);
// do regular operations
if (state == sendEmail) {
emailTask = new SendEmailAsyncTask();
emailTask.execute();
}
}
class SendEmailAsyncTask extends AsyncTask <Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
// send email
}
@Override
protected void onPostExecute(Boolean result){
if (result) {
createNotification("Email has been sent!");
emailSuccess = true;
} else {
//try again
emailSuccess = false;
}
}
}
}
答案 0 :(得分:2)
如果任务在服务停止之间执行某项操作,任务将不会停止。除非您在服务的 onDestroy 实施中调用任务的取消方法,否则只有在完成后才会结束