У меня есть служба, которая выполняет обычные операции, такие как обнаружение Bluetooth и отправка электронной почты.В зависимости от состояния запускаются разные потоки, которые подключаются через сокет Bluetooth или отправляют электронные письма.Я использую 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;
}
}
}
}