清除活动后退堆栈

W00*_*0di 7 android android-intent android-activity back-stack

我从活动A-> B-> C-> D-> E开始..当我从D-> E开始时,堆栈中应该没有活动但是,用户可以使用D中的后退按钮并转到C(没有刷新活动C,像正常的后退功能一样)

Tri*_*mon 17

您可以BroadcastReceiver在要关闭的所有活动中添加一个(A,B,C,D):

public class MyActivity extends Activity {
    private FinishReceiver finishReceiver;
    private static final String ACTION_FINISH = 
           "com.mypackage.MyActivity.ACTION_FINISH";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        finishReceiver= new FinishReceiver();
        registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        unregisterReceiver(finishReceiver);
    }

    private final class FinishReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ACTION_FINISH)) 
                finish();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

......并通过致电......关闭它们

sendBroadcast(new Intent(ACTION_FINISH));
Run Code Online (Sandbox Code Playgroud)

...在活动E中.也检查这个好例子.


Ara*_* GM 5

添加标志FLAG_ACTIVITY_CLEAR_TOP,以便在启动E活动时清除其他活动表格后备堆栈:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)

然后开始你的活动:

startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

有关的更多信息:任务和BackStack