Прочти один раз, и вы никогда не будете иметь проблемы в использовании flag_activity_clear_top
Вот простое разъяснение относительно использования Flag_Activity_Clear_Top.
One Liner Формула для его правильного использования:
Он всегда очищает промежуточные деятельности (если таковая имеется) между вызывающей активностью и вызываемой деятельностью.
Вот активность потока:
активность А -> активность В -> активность С (использование флага активности ясно, сверху, чтобы перейти к D) -> активность D
В приведенной выше последовательности при достижении к D, если мы нажмем тогда мы получим активность C-> активности B-> активность A, так как нет никакой промежуточной аКТИВНОСТИ между активностью C и активность D
мифа о некоторых разработчиках здесь есть -
После достижения активность D, используя функцию флага y clear top from C, они ожидали, что при нажатии клавиши «Назад» из D выведет их за пределы приложения. Этого никогда не будет.
Flag_Activity_Clear_Top всегда всегда очищает промежуточной деятельности между двумя деятельности, если
Вы можете добиться того, что с помощью BroadcastReceivers
:
- Создать
BaseActivity
так:
public class BaseActivity extends Activity {
private KillReceiver mKillReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mKillReceiver = new KillReceiver();
registerReceiver(mKillReceiver,
IntentFilter.create("kill", "spartan!!!"));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mKillReceiver);
}
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
}
- Сделайте свою деятельность более продолжительной, чем
BaseActivity
.
- Всякий раз, когда вы хотите, чтобы очистить стек:
Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);
активность D или активность B остается в стеке? – agamov
После использования чистой вершины и начала действия use finish(); тоже .. это решит вашу проблему. –
@JaiKumar Но в этом случае B и C останутся в задней части, так что не удастся решить этот – CommonMan