Как удалить AsyncTasks, когда я закончу с ними? - PullRequest
0 голосов
/ 04 марта 2011

Итак, я написал многопоточное приложение для Android с использованием AsyncTasks, у меня две проблемы:

  1. Когда задача завершается и возвращает результат, поток все еще работает в фоновом режиме, и я не могу понять, как заставить их уйти,

  2. Когда нажата клавиша home, рабочие потоки продолжают работать, и я не уверен, как их остановить. Кто-нибудь знает, как сделать это?

Так что ни отмена, ни завершение не могут остановить эти темы! Что мне делать?

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Вам не нужно удалять AsyncTask, после вызова onPostExecute его нужно завершить.

В AsyncTask есть метод cancel () , который можно использовать, чтобы указать задаче, что вы хотите, чтобы она сама себя остановила.Вы можете вызвать это в onPause () .

0 голосов
/ 04 марта 2011

я использую этот базовый класс действий для своих действий, выполняющих AsynchronousTask, я остановил их на методах 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 );
            }
        }
    }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...