Android应用程序的完全退出
2012-11-15 09:24
246 查看
在Android中,即使我们退出了所有的Activity。但是其应用程序并不能结束,系统还有继续保持其一段时间。
然而我们可以在根Acitivity的onDestroy()方法中,做一些操作来让该应用程序彻底退出,即进程结束。
我现在测试并有效的方法有System.exit(0)和android.os.Process.killProcess(android.os.Process.myPid())这两种方法。网上有人反应这两种方法无效,我想他们可能是没在根Acitivity的onDestroy()使用他们。上面这两种方法在非根Activity中使用时,的确无效。
不过理论上来说根Acitivity的onDestroy()被调用的话,该进程一般也就结束了。
如果你还不知道什么样的Acitivity称之为为根Acitivity的话,请参阅《Activity和Task的基本模型》和《Task和Activity相关的一些属性》
示例程序1:
protected void onDestroy() {
super.onDestroy();
System.exit(0);
//或android.os.Process.killProcess(android.os.Process.myPid());
Log.d(tag,"onDestroy");
}
示例程序2(自己的Application中)
private final static HandlerThread business0HandlerThread = new HandlerThread("Business0Handler"); private static Handler business0Handler; public static Handler getBusiness0Handler() { if (business0Handler == null) { synchronized(business0HandlerThread){ if(business0Handler==null) { business0HandlerThread.start(); business0Handler = new Handler(business0HandlerThread.getLooper()); } } } return business0Handler; }
/* * 在这里判断是否还有工作在进行 */ public boolean isAnyWorkGoing() { return false; } ActivityManager am; public boolean shouldKill() { if (isAnyWorkGoing()) { return true; } else { if (am == null) { for (int i = 0; i < 5; i++) { am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); if (am != null) break; try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } List<RunningTaskInfo> runningTasks = am.getRunningTasks(100); for (RunningTaskInfo task : runningTasks) { ComponentName baseActivity = task.baseActivity; if (baseActivity != null && task.baseActivity.getClassName().startsWith( "cn.edu.edut.robin")) { if (task.numRunning > 0) { Log.d(TAG, task.baseActivity.getClassName() + task.numRunning); flgKillLoop = false; return true; } }
} } return false; }
boolean flgKillLoop = false;
public void signKill() { flgKillLoop = true; getBusiness0Handler().post(killRunable); }
Runnable killRunable = new Runnable() {
@Override public void run() { if (shouldKill()) { android.os.Process.killProcess(android.os.Process.myPid()); } else if (flgKillLoop) { getBusiness0Handler().postDelayed(killRunable, 60 * 1000); } }
};
相关文章推荐
- Android完全退出应用程序的三种方法
- Android-完全退出当前应用程序的四种方法
- android中完全退出当前应用程序的四种方法
- android 完全退出应用程序
- Android完全退出应用程序
- 如何完全退出android应用程序
- android 完全退出应用程序
- android 完全退出应用程序 使用ExitApplication.
- android 完全退出应用程序
- Android完全退出应用程序的方法
- android完全退出应用程序
- Android完全退出应用程序
- 在Android中使用 ”堆栈法“来完全退出应用程序
- Android中完全退出应用程序
- Android完全退出应用程序
- Android完全退出应用程序的三种方法(转载)
- Android完全退出应用程序
- Android退出应用程序,完全退出!
- Android-完全退出当前应用程序的四种方法
- Android 应用程序完全退出(不会运行在后台)