最近的项目中需要点击按钮一键退出系统,方法总结如下:
1.通过发送一条特殊的广播,每个Activity在收到广播之后调用finish方法关闭自己即可
2.在application中通过一个Activity类型的list记录应用中已经打开的Activity,需要退出应用时,遍历List中的Activity,分别调用finish方法结束Activity即可。
3.定义了一个空的activity,在activity的onCreate函数中直接执行finish();在调用这个新的activity时为Intent设置标识FLAG_ACTIVITY_CLEAR_TASK,这个标识导致之前存放Activity的task将被清空,搭配上FLAG_ACTIVITY_NEW_TASK标识,新建的activity将会存在一个新建的task中,在activity创建的时候执行finish,就将新建的task也清空了,实现了退出系统的效果
public void onExitClick( View view){
Intent intent = new Intent(MainActivity.this,EditActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainActivity.this.startActivity(intent);
finish();
}
4.从当前所在的Activity通过Intent跳转到栈底的那个Activity上面,也就是我们在Manifest中设置的action为 MAIN并且category为DEFAULT的Activity上面,并且设置跳转Intent的标志为 FLAG_ACTIVITY_CLEAR_TOP,这样的话就会将栈底上面的所有Activity全部都清除掉,我们还需要把这个Activity的启动模式配置为"singleTop",这样会直接调用栈底Activity的onNewIntent方法,在这个方法里面调用finish方法关闭当前Activity就可以了;