android初学之退出应用程序

有不少界面的应用下面的方法是行不通的:
 第一种方法:首先获取当前进程的id,而后杀死该进程。
 android.os.Process.killProcess(android.os.Process.myPid())
 经过这种方式不能将应用程序彻底杀死,而且他不会把当前应用应用的Activity的task任务栈清空 android

 第二种方法:终止当前正在运行的Java虚拟机,致使程序终止
 System.exit(0);
 不会把本身的应用程序杀死 this

 第三种方法:强制关闭与该包有关联的一切执行
 ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);   
 manager.restartPackage(getPackageName());
 <uses-permission android:name="android.permission.RESTART_PACKAGES" /> rest

 只能杀死别人,不能杀死本身
 
其余方法:
1:打开系统主屏来模拟应用退出的效果,这和用户按Home键没有什么区别。
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent); 
 
 当应用程序再次打开的时候,进入的仍是原来退出时显示的界面:例如你在a.Activity界面调用了上面的方法,那么在程序再次进入的时候仍是在a.Activity 进程

2,首先要说明该方法运行在Android 1.5 API Level为3以上才能够
 private void exit2() {
  ActivityManager actMgr = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
  actMgr.restartPackage(getPackageName());
 }
 在清单文件中配置权限  android.Manifest.permission#RESTART_PACKAGES
 
 3. 根据Activity的声明周期
 咱们在A窗口打开B窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的全部Activity。
 在A窗口中使用下面的代码调用B窗口
 
 Intent intent = new Intent();
 intent.setClass(Android123.this, CWJ.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置
 startActivity(intent); get

相关文章
相关标签/搜索