Android выйти из doInBackgroundThread не выходя из активности? - PullRequest
0 голосов
/ 09 апреля 2011

все это началось, потому что я хотел отобразить тостовое сообщение в фоновой теме.(Тост-сообщения приводят к сбою приложения при попытке загрузить их, не сообщая им о загрузке в потоке пользовательского интерфейса). Теперь я понимаю, что хочу отобразить тост-сообщение и закрыть фоновый поток, это своего рода обработка ошибок и информирование пользователя оошибка.

Желаемое условие в фоновом потоке переносит пользователя к новому действию и завершает текущее.Это работает.

Теперь я заметил, что я не знаю другого способа завершить backgroundthread и показать сообщение с тостом для того же действия?

Как мне завершить фоновый поток из doInBackground

Ответы [ 2 ]

0 голосов
/ 09 апреля 2011

RD Если я могу предложить довольно извращенный метод обработки ошибок в фоновом потоке. Попробуйте обернуть вызовы в фоновом потоке в try catch и вернуть объект с состоянием. Поэтому, если вы хотите, чтобы фоновый поток возвращал строку, создайте класс BoolString.

//a utility class to signal success or failure, return an error message, and return a useful String value
//see Try Out in C#
public final class BoolString {
 public final boolean success;
 public final String err;
 public final String value;

 public BoolString(boolean success, String err, String value){
     this.success= success;
     this.err= err;
     this.value= value;
 }
}

Использование:

public BoolString tryEncrypt(String inString, String password) {
    try {
        String value= encrypt(inString, password);
        return new BoolString(true,"",value);
    }
    catch (GeneralSecurityException e){
        return new BoolString(false,e.getMessage(),"");
    }
}

    protected void onPostExecute(BoolString result){          
        progress.dismiss();
        if (result.success){
                result.value;
        }
        else {
              result.err;
        }
    }
0 голосов
/ 09 апреля 2011

Вам необходимо выполнить метод cancel () для вашей задачи. Затем, когда он отменяется, а не работает onPostExecute (), он вызывает onCancelled (). Поместите туда тост-сообщение.

...