如何退出Activity?如何安全退出已調用多個Activity的Application?
退出Activity直接調用finish()方法 //使用者點選back鍵就是退出一個Activity
退出Activity會執行onDestory()方法。
1.抛出異常強制退出:
該方法通過抛異常,使程式Force Close。
驗證可以,但是,要解決的問題是,如何使程式結束掉,而不彈出Force Close的視窗。
//安全結束程序 android.os.Process.killProcess(android.os.Process.myPid());
2.記錄打開的Activity:
每打開一個Activity,就記錄下來。在需要退出時,關閉每一個Activity即可。
List<Activity>lists; 在application全集的環境裡面
lists=new ArrayList<Activity>();
lists.add(activity);
for(Activity activity : lists)
{
activity.finish();
}
3.發送特定廣播:
在需要結束應用時,發送一個特定的廣播,每個Activity收到廣播後,關閉即可。
//給某個Activity注冊接受廣播的意圖
registerReceiver(receiver,filter)
//如果接受到的是關閉activity的廣播,就調用finish()方法,把目前的Activity結束掉。
4.遞歸退出
在打開新的Activity時使用startActivityForResult,然後自己加标志,在onActivityResult中處理,遞歸關閉。
上面是網上的一些做法。
其實,可以通過intent的flag來實作,intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP)激活一個新的Activity,然後在新的Activity的onCreate()方法裡
finish()掉。
service是否在main thread中執行,service裡面是否能執行耗時的操作?
預設情況,如果沒有顯示的指定service所運作的程序,service和Activity是運作在目前app所在程序的main thread(UI主線程)裡面
service裡面不能執行耗時的操作(網絡請求,拷貝資料庫,大檔案)
在子線程中執行 new Thread().start();
特殊情況,可以在清單檔案配置service執行所在的程序,讓service在另外的程序中執行。