【发布时间】:2012-03-06 22:41:18
【问题描述】:
我有一个服务,它执行蓝牙发现和发送电子邮件等常规操作。根据状态,它启动不同的线程来进行蓝牙套接字连接或发送电子邮件。我正在使用 AsyncTask 发送电子邮件,目前运行良好。
我的问题是:我从 Service 启动的 AsyncTask 是否在 Service 停止时完成,还是 Service 直到 AsyncTask 完成才停止?在正常情况下,服务永远不会“停止”,但可以在内存不足、电池电量不足或手机关机时停止。 Service停止后我需要恢复操作,我想知道Service停止时如何判断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;
}
}
}
}
【问题讨论】:
标签: android service android-asynctask