Не звонить на Дестрой на onBackPressed - PullRequest
1 голос
/ 30 мая 2011

Я не хочу, чтобы моя активность нарушалась при нажатии кнопки Назад. Мое приложение совместимо с 1.6 SDK. Ссылаясь на http://android -developers.blogspot.com / 2009/12 / back-and-other-hard-keys-three-story.html и Переопределить кнопку «Назад», чтобы она работала как домашняя кнопка , я выбрал следующий код:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
                // For versions lower than 2.0     
    if (Utility.buildDet.getDeviceBuildAPI() <= Utility.buildDet.getBuildApi() 
            && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
        onBackPressed();
    return super.onKeyDown(keyCode, event);
}

      // In any version, this function will be called
public void onBackPressed() {
    // This will be called either automatically for you on 2.0    
    // or later, or by the code above on earlier versions of the platform.
    Log.i(TAG, "##### BACK KEY IS PRESSED");
    this.moveTaskToBack(true);  // on false, it shows moveTaskToBack: 11
    return;
}

Когда я нажимаю кнопку Назад, я эти журналы

: ##### BACK KEY IS PRESSED
 INFO/ActivityManager(51): moveTaskToBack: 10
: !!!!!!! Into onPause
: !!!!!!! Into onStop
: !!!!!!! Into DESTROY

Я не переопределил moveTasToBack (). Anu clu, что я делаю, чтобы не разрушаться при нажатии кнопки назад. Может быть, я хочу просто игнорировать кнопку или скрыть активность.

Любая подсказка, почему она не работает, как ожидалось.

Спасибо

Ответы [ 4 ]

8 голосов
/ 30 мая 2011
public boolean onKeyDown(int keyCode, KeyEvent event)  
{

     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
     {

        this.moveTaskToBack(true);
           return true;
      }

    return super.onKeyDown(keyCode, event);
}
2 голосов
/ 30 мая 2011

Почему вы хотите изменить стандартную систему bahaviour?Система Android может разрушать активность или нет.Это должно зависеть только от системы.Вы, вероятно, хотите сделать что-то, что можно сделать по-другому.Может быть, вам нужны услуги или реализуется сохранение состояния активности?

0 голосов
/ 05 августа 2013
@Override
public void finish() {
    //super.finish();
    moveTaskToBack(true);
}
0 голосов
/ 10 августа 2012

Ключ возврата не решит эту проблему.Жизненный цикл активности в андроиде лучше оставить Системе.Система убьет вашу активность, когда захочет.

...