当服务停止时,AsyncTask是否由服务完成启动?

时间:2012-03-06 22:41:19

标签: android service android-asynctask

我有一个服务,可以执行常规操作,例如蓝牙发现和发送电子邮件。根据状态,它启动不同的线程,用于连接蓝牙套接字或发送电子邮件。我使用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;
            }
        }       
    }
}

1 个答案:

答案 0 :(得分:2)

如果任务在服务停止之间执行某项操作,任务将不会停止。除非您在服务的 onDestroy 实施中调用任务的取消方法,否则只有在完成后才会结束