我完成后如何删除AsyncTasks?

时间:2011-03-04 15:23:16

标签: android multithreading memory android-asynctask

所以我使用AsyncTasks编写了一个多线程的Android应用程序,我遇到了两个问题:

  1. 当任务完成并返回结果时,线程仍在后台运行,我无法弄清楚如何让它们消失,

  2. 当主页键被击中时,工作线程继续工作,我不知道如何阻止它们。有谁知道怎么做?

  3. 因此取消或完成都不能阻止这些线程!我该怎么办?

2 个答案:

答案 0 :(得分:1)

你不应该删除AsyncTask,一旦调用onPostExecute就应该完成。

AsyncTask有一个cancel()方法,您可以使用该方法告诉任务您希望它自行停止。您可以在onPause()中调用它。

答案 1 :(得分:0)

我将这个活动基类用于执行异步任务的活动,我在onStop方法上停止它们,即

package com.xxxxxx.activity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;


public class WkActivity extends Activity {

    protected AsynchronousTask aTask;
    private AlertDialog dialog;

    @Override
    protected void onStop() {
        super.onStop();
        stopAsyncOperation();
    }

    private void stopAsyncOperation(){
        if( aTask != null){
            if( aTask.getStatus().equals( AsyncTask.Status.RUNNING )){
                aTask.cancel( true );
            }
        }
    }



}