android初学之退出应用程序
2019獨角獸企業重金招聘Python工程師標準>>>
有很多界面的應用下面的方法是行不通的:
?第一種方法:首先獲取當前進程的id,然后殺死該進程。
?android.os.Process.killProcess(android.os.Process.myPid())
?通過這種方式不能將應用程序完全殺死,并且他不會把當前應用應用的Activity的task任務棧清空
?第二種方法:終止當前正在運行的Java虛擬機,導致程序終止
?System.exit(0);
?不會把自己的應用程序殺死
?第三種方法:強制關閉與該包有關聯的一切執行
?ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);???
?manager.restartPackage(getPackageName());
?<uses-permission android:name="android.permission.RESTART_PACKAGES" />
?只能殺死別人,不能殺死自己
?
其他方法:
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);
轉載于:https://my.oschina.net/u/1174979/blog/142920
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的android初学之退出应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Alaya Webdav Server
- 下一篇: 不可新增人员