2010-10-11 4 views
1

Если пользователь нажал клавишу «Домой», я могу приостановить свое приложение, потому что срабатывает событие onPause.Как приостановить мое приложение, когда пользователь долго нажимает на Home?

Однако, если пользователь долгое время нажимает кнопку «Домой», появляется всплывающее окно запуска приложения, и мое приложение продолжает работать за ним.

Я хочу приостановить свое приложение в этой ситуации. Что я могу сделать?

(NB. Я не хочу препятствовать долгому нажатию Home или изменять его поведение каким-либо образом. Мое приложение просто должно знать, что это произошло. Это игра, поэтому я хочу приостановить ее.)

ответ

-1

Вы можете переопределить метод onKeyLongPress() в своей деятельности, выполнить то, что хотите, а затем просто вызвать метод super.

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

+0

К сожалению, это событие не срабатывает при долгом нажатии клавиши «Домой» (хотя это относится и к другим клавишам: поиск работает, например). – teedyay

1

Если все остальное терпит неудачу, дает пользователю возможность вручную паузы (с помощью кнопки или меню).

Похоже, что у вас есть ситуация, когда пользователь будет недоволен вашей игрой, продолжающейся во время долгой печати, но на данный момент пользователь уже сдвинул фокус от игры. Если бы я был в разгар чувствительной к времени игре и хотел уйти, нажав кнопку «Домой», моя первая мысль заключалась в том, чтобы вручную приостановить игру.

Просто пища для размышлений, удачи.

1

Вы также можете попробовать переопределить onWindowFocusChanged в действии. Что-то вроде:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    Log.d(TAG, "On windows focus changed. (" + hasFocus + ")"); 

    if (!hasFocus) doStopGame(); 
} 

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

Смежные вопросы

 Смежные вопросы