После нажатия кнопки «Назад» я бы хотел, чтобы мое приложение перешло в состояние останова, а не в уничтоженное состояние.
В документации для Android говорится:
... не все действия ведут себя так, как будто они уничтожаются при нажатии НАЗАД. Когда пользователь начинает воспроизведение музыки в приложении «Музыка», а затем нажимает кнопку «НАЗАД», приложение отменяет нормальное поведение спины, предотвращая разрушение активности проигрывателя, и продолжает воспроизведение музыки, даже если его активность больше не видна
Как мне воспроизвести эту функцию в моем собственном приложении?
Я думаю, что должно быть три варианта ...
Захватите кнопку «назад» (как показано ниже) и затем вызовите любой метод, который вызывает кнопка «Домой».
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Log.d(this.getClass().getName(), "back button pressed"); } return super.onKeyDown(keyCode, event); }
Захватите кнопку «Назад» и затем нажмите кнопку «Домой».
Захватите кнопку «Назад», затем запустите «Активность» на домашнем экране, фактически переведя «Активность» моего приложения в состояние остановки.
Изменить: я знаю об услугах и использую один в приложении, с которым связана эта проблема. Этот вопрос, в частности, касается перевода Действия в остановленное состояние, а не в уничтоженное состояние при нажатии кнопки «Назад».
Ответы:
Большую часть времени вам нужно создать Сервис для выполнения чего-либо в фоновом режиме, и ваш видимый
Activity
просто контролирует этоService
. (Я уверен, что музыкальный проигрыватель работает таким же образом, поэтому пример в документации кажется немного вводящим в заблуждение.) Если это так, то выActivity
можете,finish
как обычно, иService
будет работать.Более простой подход - зафиксировать
Back
нажатие кнопки и вызвать moveTaskToBack (true) следующим образом:Я думаю, что предпочтительным вариантом должно быть выполнение Действия в нормальном режиме и возможность его воссоздания, например, при необходимости считывая текущее состояние из Службы. Но
moveTaskToBack
может быть использована в качестве быстрой альтернативы при случае.ПРИМЕЧАНИЕ : как указано Дейвом ниже, Android 2.0 представил новый
onBackPressed
метод и эти рекомендации о том, как обращаться с кнопкой «Назад».источник
Используйте следующий код:
источник
Если вы хотите поймать кнопку «Назад», посмотрите этот пост в блоге разработчиков Android. . Он описывает более простой способ сделать это в Android 2.0 и лучший способ сделать это для приложения, работающего на 1.x и 2.0.
Однако, если ваша активность остановлена, она все равно может быть уничтожена в зависимости от наличия памяти на устройстве. Если вы хотите, чтобы процесс запускался без пользовательского интерфейса, вы должны создать
Service
. В документации говорится об услугах:Это кажется подходящим для ваших требований.
источник
попробуйте переопределить void,
onBackPressed()
определенный в классе android.app.Activity.источник
если это помогает кому-то еще, у меня было действие с двумя макетами, которые я включал и выключал для наглядности, пытаясь эмулировать некую структуру page1> page2. если бы они были на странице 2 и нажали кнопку «назад», я бы хотел, чтобы они вернулись на страницу 1, если они нажали кнопку «назад» на странице 1, она все равно должна работать как обычно. Это довольно простой, но он работает
надеюсь, это поможет кому-то, ура
источник
Рабочий пример ..
Убедитесь, что не вызываете super.onBackPressed ();
Таким образом, кнопка «Назад» действует как кнопка «Домой». Это не завершает вашу деятельность, но взять его на задний план
Второй способ заключается в вызове
moveTaskToBack(true);
вonBackPressed
и быть уверенным , чтобы удалитьsuper.onBackPressed
источник
Еще лучше, как насчет OnPause () :
Вызывается как часть жизненного цикла действия, когда действие переходит в фоновый режим, но еще не было уничтожено. Аналог onResume ().
Когда действие B запускается перед действием A, этот обратный вызов будет вызываться для A. B не будет создаваться до тех пор, пока функция onPause () A не будет возвращена, поэтому обязательно
enter code here
не делайте здесь ничего длинного.Этот обратный вызов в основном используется для сохранения любого постоянного состояния, которое редактирует действие, и проверки того, что ничего не потеряно, если не хватает ресурсов для запуска нового действия без предварительного его уничтожения.
Это также хорошее место для таких вещей, как остановка анимации и другие вещи, которые потребляют заметное количество ресурсов процессора, чтобы максимально быстро переключиться на следующее действие, или для закрытия ресурсов с эксклюзивным доступом, таких как камера.
источник
Переопределить onBackPressed () после Android 2.0. Такие как
источник
Я перепробовал все вышеперечисленные решения, но ни одно из них не помогло мне. Следующий код помог мне при попытке вернуться к MainActivity так, чтобы вызывался метод onCreate:
Intent.FLAG_ACTIVITY_CLEAR_TOP - это ключ.
источник
Я использую @Mirko N. с помощью автоответчика сделал новый Custom EditText
Затем установите данные из вашей деятельности
Спасибо.
источник