在开发过程中发现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更好的退出应用方案(推荐使用)