Как завершить () действие, когда нажата кнопка «Домой» - PullRequest
9 голосов
/ 17 июня 2011

По сложной причине мне нужно иметь возможность завершать () свои действия, когда пользователь нажимает кнопку HOME.

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

Или, в качестве альтернативы, можно ли как-то заставить новое действие принудительно завершить () предыдущее действие?

Ответы [ 5 ]

12 голосов
/ 17 июня 2011

как насчет

android:launchMode="singleTask"

или

android:launchMode="singleInstance"

в вашем манифесте?я думаю, что singleTask - это то, что вам нужно, но я все еще не совсем ясно о том, что вы делаете.

"Система создает действие в корне новой задачи и направляет ее намерение. Однакоесли экземпляр действия уже существует, система направляет намерение к существующему экземпляру посредством вызова его метода onNewIntent () вместо создания нового. " singleTask

@Override
void onPause() {
   super.onPause();
   finish();
}

Документы разработчика: Жизненный цикл Acitvity , Завершение

3 голосов
/ 23 октября 2014

Установить android: clearTaskOnlaunch = "true" на активности, запущенной с домашнего экрана. Пример:

<activity
            android:name="MainActivity"
            android:exported="true"
            android:clearTaskOnLaunch="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
0 голосов
/ 20 февраля 2015
@Override
public void onStop() {
    super.onDestroy();
}
0 голосов
/ 10 апреля 2012

У меня возникла проблема с закрытием звука, на кнопку home нажата.Я сделал этот код ниже.Надеюсь, это поможет вам.Переопределить метод onpause ().

 @Override
 public void onPause(){
      System.exit(0);
      super.onPause(); 
 }
0 голосов
/ 17 июня 2011

Не уверен насчет финиша () при нажатии кнопки home, но я думаю, что вы можете завершить () предыдущее действие, используя:

Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();

Вероятно, это не лучший способ сделать это.Я думаю, что вы также можете вызвать родительское действие в subactivity и завершить его таким образом, но не уверены.

...