android退出應用程序

在eoe論壇看到的,總結的很不錯,分享一下。
當應用不再使用時,通常需要關閉應用,可以使用以下兩種方法關閉android應用:
第一種方法:終止當前正在運行的Java虛擬機,導致程序終止
System.exit(0);
或者
Runtime.getRuntime().exit(0);
第二種方法:強制關閉與該包有關聯的一切執行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);   
manager.restartPackage(getPackageName());
使用這種方式關閉應用程序需要加上權限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
第三種方式:拋出異常
原理:在程序遇到非檢查異常時,程序退被強制退出,那麼虛擬器也將會被關閉,
     所以利用一個非檢查異常,退出程序,但會遇到一個問題,就是強制退出的對話框的出現,是不是很噁心?
其實沒有關係,可以不讓系統彈出對話框,看代碼

public void exit(){    
                    
                Thread.currentThread().setUncaughtExceptionHandler(new java.lang.Thread.UncaughtExceptionHandler() {    
                            
                        @Override    
                        public void uncaughtException(Thread thread, Throwable ex) {    
                                //遇到不可抓取的異常會到這裏來,就不會彈出對話框了,完美結局    
                                //在這裏最好讓所有的activity全finish了,也另加入關閉進程的方法    
                        }    
                });    
                String meIsNull = null;    
                //在這裏肯定是空指針異常,遇到異常之後,執行上面的回調代碼,就不會彈出對話框了    
                meIsNull.equals("空指針");    
        }    
第四種方式:用一個集合自己管理activity
     當一個activity創建的時候,把實例傳遞到那個管理activity的集合裏,這個集合一般放在一個可全局訪問的一個類內,
   最好那個類繼承Application,然後在menifest的<application>標籤的屬性name上加上自己寫的application類,這個類是單例的。
  退出的時候,遍歷集合讓所有的activity finish掉,最後調用關閉進程的那個方法 ,加上
android.os.Process.killProcess(android.os.Process.myPid())
  
第五種方式:使用遍歷的方式
  這種方式比較繁瑣複雜,使用遞歸的方式,沒當打開一個activity的時候都用startActivityForResult(),在onActivityResult()裏接收結果關閉當前的activity,不推薦使用,太繁瑣麻煩。
加上
android.os.Process.killProcess(android.os.Process.myPid())
  
第六種方式:使用intent的flag實現
  原理:在android程序中,當打開一個activity的時候可以傳進去這樣一個flag:  Activity.FLAG_ACTIVITY_CLEAR_TOP,
  當打開那個新的activity的時候,任務棧裏的所有activity將會被清空,最後只剩下那個新的activity,然後在新的activity
  裏使用finish()把自己銷燬了就可以了。加上
android.os.Process.killProcess(android.os.Process.myPid())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章