У меня есть корневая активность, которая при необходимости определяется singleTop
Очистите Android приложения всего на данном виде деятельности (выше/запущенно, и в том числе основного запущен один)
<activity
android:name=".MyMainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
У меня есть уведомление, которое посылает широковещательные пакеты мой сервис переднего плана, рассказывающий об этом, и активность, если она связана с MyMainActivity
, для остановки. Виджет можно коснуться, чтобы восстановить MyMainActivity
до его предыдущего состояния, отсюда требуется singleTop
.
Проблема заключается в том, что, начиная с введения кнопки остановки обслуживания в уведомлении (де-rigeur, как я понимаю), он убивает только MyMainActivity
, что означает, что любой из Activity
s, начиная с него, будет сохраняться, как я и предполагал, но не смог вернуться значимые результаты с момента их возникновения, MyMainActivity
уже уничтожены.
Я застрял с простым finish()
, чтобы обработать завершение вещания от MyMainActivity
, после отключения от службы. Все остальные варианты finish
имели нежелательные побочные эффекты.
System.exit(0);
действительно действительно хорошо. За исключением того, что ожидаемый цикл жизненного цикла к разрушению игнорируется, а перезапуск - это немного беспокоиться.
finishAffinity
является другой кандидат, за исключением того, что описано:
закончить эту деятельность, а также все виды деятельности, непосредственно ниже его
, когда мне нужно закончить деятельность над ним, в соответствии с android dev терминология.
Как это сделать?