Нажмите кнопку домой, чтобы остановить сервис

1

я хочу, чтобы пользователь нажал кнопку "домой", мой сервис будет остановлен, это мой код, но он не работает для меня, пожалуйста, помогите мне:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
stopService(new Intent(this, MyService.class));
return true;
}
return super.onKeyDown(keyCode, event);
}

благодаря

  • 1
    Может ли кто-нибудь помочь мне, пожалуйста?
Теги:

3 ответа

4
Лучший ответ

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

Аналогично, вы можете привязать свое обслуживание к активности (или действиям). Связанная служба будет уничтожена, когда все связанные с ней действия прекратятся.

  • 0
    В этом случае, возможно, служба даже не нужна ... использования AsyncTask может быть достаточно.
  • 1
    Спасибо, все отлично работает.
Показать ещё 2 комментария
3

public static final int KEYCODE_HOME

Этот ключ обрабатывается каркасом и никогда не доставляется в приложения.

Источник

  • 1
    Так как я могу это сделать?
  • 0
    Пользователи не взаимодействуют с сервисами напрямую. Вместо этого вы можете использовать Уведомление, но оно сильно зависит от того, что делает ваше приложение.
Показать ещё 1 комментарий
0

Сделайте активность root и добавьте это,

@Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
            // Get called every-time when application went to background.
            System.exit(0);
        }

    }

расширьте каждое действие с помощью rootActivity, оно отключится при нажатии кнопки home/menu

Ещё вопросы

Сообщество Overcoder
Наверх
Меню