天天看點

如何退出Activity?如何安全退出已調用多個Activity的Application?

如何退出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在另外的程序中執行。