程序由多个Activity组成,假设有A跳至B,由B跳至C,在C点击Back键要完全退出程序。需要重写back键响应事件。
@Override
public boolean onKeyDown(int keyCode,KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 这里处理退出程序的逻辑
return true;
}else{
return super.onKeyDown(keyCode,event);
}
}
在网上搜了大致三种方法:
1、杀死进程。android.os.Process.killProcess(android.os.Process.myPid());
2、System.exit(0);
3、关闭程序包。
ActivityManager activityMgr=(ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityMgr.restartPackage(getPackageName());
这个需要添加权限:<uses-permission android:name="android.permission.RESTART_PACKAGES" />
一一尝试了下都不好使。无奈之下,采用了点击back键直接跳转到桌面的方法。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
相当于把桌面当作一个Activity来跳转。这样就解决了问题。