在开发过程中发现system.exit(0)或 Process.killProcess调用后,如果还存在activity,会导致程序杀死重启等很多问题。
首先在 application中添加boolean值ifexit
public class myapplication extends Application {
public static boolean ifexit;
}
然后在我们的BaseActivity中,也就是我们所有activity的父类
@Override
protected void onRestart() {
super.onRestart();
if(myapplication
.ifexit
==true){
finish();
}
}
然后在我们的每个继承
BaseActivity的activity的onCreate中添加
myapplication.ifexit = false;
然后在需要关闭的主页activity中添加onKeyDown监听事件:
private boolean isExit;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isExit == false) {
isExit = true; // 准备退出
Toast.makeText(this, "再次点击退出", Toast.LENGTH_SHORT).show();
Timer tExit = new Timer();
tExit.schedule(new TimerTask() {
public void run() {
isExit = false; // 取消退出
}
}, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
} else {
myapplication.ifexit = true;
finish();
}
}
return false;
}
不过app可以使用acitivy+大量fragment来实现,同时主activity在AndroidMainfest.xml中设置为android:launchMode="singleTask"模式即可然后在打开多级页面后,返回该activity时,只需要回到此页面,之前的多级页面也就自动关闭掉了。
告辞!!
更多推荐
Android比system.exit(0)或 Process.killProcess更好的退出应用方案(推荐使用)
发布评论