В настоящее время у меня есть действие, которое, когда оно отображается, уведомление также отображается на панели уведомлений.
Это делается для того, чтобы, когда пользователь нажимал кнопку «Домой», а действие переместилось в фоновый режим, они могли вернуться к действию через уведомление.
Проблема возникает, когда пользователь нажимает кнопку «Назад», моя активность уничтожается, но уведомление остается, так как я хочу, чтобы пользователь мог нажимать назад, но при этом получать доступ к активности через уведомление. Но когда ПОЛЬЗОВАТЕЛЬ пытается это сделать, я получаю нулевые указатели как попытку начать новую деятельность, а не вернуть старую.
По сути, я хочу, чтобы кнопка «Назад» действовала точно так же, как кнопка «Домой», и вот как я пытался это сделать:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
Однако приведенный выше код все еще позволяет уничтожить мою активность. Как я могу остановить уничтожение моей активности при нажатии кнопки «Назад»?
источник
, the
<` должен стать>
.Ответы:
Удалить ваш ключевой слушатель или вернуться,
true
когда у вас естьKEY_BACK
.Вам просто нужно следующее, чтобы поймать клавишу возврата (убедитесь, что не вызывать супер в
onBackPressed()
).Кроме того, если вы планируете запускать службу в фоновом режиме, обязательно просмотрите
startForeground()
и убедитесь, что вы получаете постоянное уведомление, иначе Android убьет ваш сервис, если ему потребуется освободить память.источник
Это было проще реализовать только одной строкой кода:
источник
Я думаю, что вам нужно не переопределить кнопку «назад» (это не кажется хорошей идеей - ОС Android определяет это поведение, зачем менять его?), А использовать жизненный цикл активности и сохранить свои настройки / данные в Событие onSaveInstanceState (Bundle) .
Затем вы используете onCreate (Bundle), чтобы вытащить все из этого постоянного пакета и воссоздать ваше состояние.
Рассмотрите приведенный выше псевдо-код, чтобы указать вам правильное направление. Ознакомление с жизненным циклом деятельности должно помочь вам определить лучший способ достичь того, что вы ищете.
источник
просто сделай это ..
комментирование //super.onBackPressed (); сделает свое дело
источник
Попробуй это:
источник
На тот случай, если вы захотите обработать поведение кнопки «Назад» (внизу телефона) и кнопки «Домой» (слева от панели действий), это пользовательское действие, которое я использую в своем проекте, может помочь вам ,
Пример использования в вашей деятельности:
источник
источник
В Котлине:
Для получения дополнительной информации вы можете проверить это .
Существует также конкретный вопрос о переопределении кнопки возврата в Kotlin.
источник