Функции onPause() и onResume() при разработке домашнего экрана

Я разрабатываю домашний экран, на котором я показываю список приложений в виде сетки. На первом экране моего ДОМАШНЕГО ЭКРАНА есть некоторая анимация, и когда вы нажимаете кнопку, отображается сетка. Итак, проблема в том, что; 1)). Я открыл приложение из gridview, оно открывается нормально, но когда я выхожу из этого конкретного приложения, кнопка BACKButton возвращает меня на экран GridView (это нормально). Теперь, когда я нажимаю кнопку HOME, она выполняет ту же работу, что и кнопка BACKBUTTON.

Я слушаю эти кнопки, используя dispatchKeyEvent(KeyEvent event), но они не работают с кнопкой «Домой». Логически, я не должен работать, потому что это dispatchKeyEvent(KeyEvent event) работает для моего приложения, а не для любого другого приложения.

Я нашел несколько других путей решения этой проблемы,

Когда я открываю другие приложения, функции onPause() и onStop() вызываются на моем домашнем экране, предположим, я установил там флаг, но, сделав это, как я смогу узнать, что после выполнения своих действий в ДРУГОМ приложении пользователь нажимает КНОПКУ HOME или НАЗАД.


person Custadian    schedule 17.07.2013    source источник
comment
Пожалуйста, скажите мне, что вы хотите, чтобы нажать кнопку «Домой» ...   -  person DynamicMind    schedule 17.07.2013
comment
Я хочу показать 1-й экран моего HomeScreen, на котором я применяю анимацию и предоставляю пользователю кнопки для открытия gridView.   -  person Custadian    schedule 17.07.2013
comment
вы должны добавить finish(), когда пользователь щелкает значок приложения в боковом представлении сетки   -  person DynamicMind    schedule 17.07.2013
comment
когда я делаю это, это выводит меня из моего домашнего экрана из-за вызова finish (). Как я уже упоминал в своем вопросе, я могу обнаружить, что пользователь открыл другое приложение для сетки, но как я узнаю, что пользователь нажимает BACKBUTTON или HOMEBUTTON для выхода из приложения.   -  person Custadian    schedule 17.07.2013
comment
@Override public boolean onKeyDown(int keyCode, событие KeyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { } if (keyCode == KeyEvent.KEYCODE_HOME) { }}   -  person DynamicMind    schedule 17.07.2013
comment
Вы можете различать, используя приведенный выше код комментария   -  person DynamicMind    schedule 17.07.2013
comment
Я также использую DispatchKeyEvent для различения событий. Но когда пользователь находится в активности другого приложения, как мое приложение может узнать об этом ключевом событии. Поскольку этот код будет работать в моем приложении. Итак, я пытался, но потерпел неудачу.   -  person Custadian    schedule 17.07.2013


Ответы (2)


Вы должны объявить, что ваша домашняя активность выглядит так, как показано ниже.

 <activity
            android:name="com.android.launcher2.Launcher"
            android:launchMode="singleTask"
            android:clearTaskOnLaunch="true"
            android:stateNotNeeded="true"
            android:theme="@style/Theme"
            android:windowSoftInputMode="stateUnspecified|adjustPan"
            android:configChanges="locale">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MONKEY"/>
            </intent-filter>
        </activity>

и объявить gridactivity как обычную активность в манифесте

Надеюсь, у вас есть решение.

person DynamicMind    schedule 17.07.2013

dispatchKeyEvent(KeyEvent event) не сможет поймать нажатие кнопки "Домой". если вы хотите захватить кнопку «Домой», нажмите «Использовать onUserLeaveHint()». А для захвата кнопки «Назад» используйте onBackPressed().

person AndyW    schedule 25.09.2013