Android完全退出應用程序,完美解決方案


  最近公司工作不是很忙,就抽空研究了下Android的引導頁,但是在寫完引導頁並且進入到住頁面之后,在退出時,采用"再按一次退出"的方式去實現的,用的方式是殺掉進程跟exit,即:android.os.Process.killProcess(android.os.Process.myPid())或者System.exit(0);

  但是問題出現了,因為我在進入引導頁Activity跟主界面Activity之前我是還有一個歡迎頁Activity的(注:這個入口Activity的作用是判斷此應用程序是否是首次加載,如果是首次加載就跳轉到引導頁中,否則,直接跳轉到主界面Activity中),當我用以上兩種方式的任意一種時,它並沒有完全退出應用程序,而只是純粹的銷毀當前的Activity並且返回上一個Activity中,也就是入口歡迎頁Activity,但這不是我想要的結果,所以就查了查關於完全退出應用程序的解決方案,最后找到了這個方案,完美解決該問題,希望可以借鑒給正在學習的Android菜鳥兒們。。。

  Android退出應用程序回調用android.os.Process.killProcess(android.os.Process.myPid())或者System.exit(0),這只是針對第一個Activity時有效(即入口歡迎頁Activity),如果我的應用程序中需要用到多個Activity,並且要求每個Activity都可以直接退出該應用程序時,這個方案也就無法去實現了。

  網上查了下,現下最流行的方式是定義一個棧,寫一個自定義的MyApplication類,利用單例模式去單獨對Activity進行管理,在每個Activity的onCreate()方法中調用MyApplication.getInstance().addActivity(this)將當前的Activity添加到棧中統一管理,如果需要退出應用程序時再調用MyApplication.getInstance().exit()方法直接就完全退出了應用程序。

  實現方案:統一管理的好處就是如果需要退出時,直接將add進棧的Activity進行同意finish就行。exit方法的實現原理就是將棧中所有的Activity實例循環然后finish的。

具體調用方式如上所述,以下只是MyApplication的具體實現,至於如何調用此處不便贅述。

代碼如下:

 

public class MyApplication extends Application {

 private List<Activity> activityList = new LinkedList<Activity>();    private static ExitApplication instance;    private ExitApplication()  {     }    // 單例模式中獲取唯一的ExitApplication實例  public static ExitApplication getInstance()  {   if(instance == null)   {    instance = new ExitApplication();   }   return instance;  }    // 添加Activity到容器中  public void AddActivity(Activity activity)  {   this.activityList.add(activity);  }    public void exit()  {   for(Activity activity:this.activityList)   {    activity.finish();   }   System.exit(0);  } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM