zoukankan      html  css  js  c++  java
  • Android 完美退出 App (Exit)

    最近两天为了解决Android上面退出程序问题折腾了半死,在google & baidu 上面找了很久、很久出来的完全千篇一律,说的方法有三,但是经过我试验后全部不行。

          三个方法分别是:

    1. killProcess, 这种方式当你kill后 Activity 会返回到上一个Activity
    2. Android Level 8(包含8)前使用一个API来操作,Level8以后又是另外一种,所以不能通用
    3. 使用 FLAG_ACTIVITY_CLEAR_TOP,从 A 到 B
    下面介绍自己的方式:
    大家都知道 Android 的 Activity 是存着历史栈的,比如从 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 Activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。
     
    使用全局变量。对了,第一个想到的就是继承 Application,代码入下。
    [java] view plain copy
     
    1. public class AgentApplication extends Application {  
    2.   
    3. private List<Activity> activities = new ArrayList<Activity>();  
    4.   
    5.     public void addActivity(Activity activity) {  
    6.         activities.add(activity);  
    7.     }  
    8.   
    9.     @Override  
    10.     public void onTerminate() {  
    11.         super.onTerminate();  
    12.           
    13.         for (Activity activity : activities) {  
    14.             activity.finish();  
    15.         }  
    16.           
    17.         onDestroy();  
    18.           
    19.         System.exit(0);  
    20.     }  
    21. }  

    然后在 Activity  onCreate 的时候来调用  addActivity (),有人可能想到这个Application需要在所有的 Activity  onCreate的时候都使用,需要做一个单例实例。其实根本不需要。在 Activity 中使用  this.getApplication() 就可以了。
     
    最后在你需要推出程序的地方调用 application.onTerminate() 就可以了。记住:super.onTerminate() 必须调用,代码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。
     
    运行以上代码后,在LogCat 中会出现一行提示:
    Process  包名 (pid  xxxxx)  has died.  证明你的程序退出了。现在你可以测试了。
     
    希望对大家有用。同时感谢同事胡楠帮我处理其他问题,使得我才有时间来 写博客,谢谢。 
  • 相关阅读:
    如何解决chrome和chromedriver版本不匹配
    RobotFramework 实战1——数据检查自动化
    RobotFramework 中的循环语句:FOR IN RANGE
    robotframework 获取昨日(get time关键词的用法)
    大数据用户画像方法与实践(干货 转帖)
    Scrapy实战篇(九)之爬取链家网天津租房数据
    Scrapy实战篇(八)之爬取教育部高校名单抓取和分析
    Scrapy实战篇(七)之爬取爱基金网站基金业绩数据
    Selenium常用方法
    Selenium之动作链(ActionChains)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5687651.html
Copyright © 2011-2022 走看看