读一遍,flag_activity_clear_top 的使用永远不会有问题
以下是关于 Flag_Activity_Clear_Top 用法的简单说明。
一种正确使用的衬垫配方:
它总是清除调用活动和被调用活动之间的中间活动(如果有的话)。
这是一个活动流程:
活动 A -> 活动 B -> 活动 C(使用标志活动清除顶部转到 D)-> 活动 D
在上面的序列中,当我们按回到达 D 时,我们将得到 Activity C->Activity B-> Activity A ,因为在 Activity C 和 Activity D 之间没有中间活动
这里一些开发人员的神话是 -
在通过使用 C 中的标志 activity clear top 到达活动 D 后,他们期望从 D 中按下后退键会将他们带到应用程序之外。这永远不会发生。
Flag_Activity_Clear_Top 总是清除两个活动之间的中间活动(如果有)
您可以通过使用来实现BroadcastReceivers
:
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);