zoukankan      html  css  js  c++  java
  • Android 编程下 Activity 的创建和应用退出时的销毁

    为了确保对应用中 Activity 的创建和销毁状态进行控制,所以就需要一个全局的变量来记录和销毁这些 Activity。这里的大概思路是写一个类继承 Application,并使获取该 Application 的实体为单例模式,在新的 Activity 被创建时在对应 Activity 的 onCreate 方法中将自己存入 Application 的集合中,然后在应用退出时将 Application 存有的 Activity 逐个进行销毁即可完全退出应用。代码如下:

    package cn.sunzn.app;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.app.Application;
    
    public class AgentApp extends Application {
        private List<Activity> activities = new ArrayList<Activity>();
        private static AgentApp instance;
    
        private AgentApp() {
    
        }
    
        /**
         * 单例模式中获取唯一的 Application
         */
        public static AgentApp getInstance() {
            if (null == instance) {
                instance = new AgentApp();
            }
            return instance;
        }
    
        /**
         * 存放 Activity 到 List 中
         */
        public void addActivity(Activity activity) {
            activities.add(activity);
        }
    
        /**
         * 遍历存放在 List 中的 Activity 并退出
         */
        public void onTerminate() {
            super.onTerminate();
            for (Activity activity : activities) {
                activity.finish();
                activities.remove(activity);
            }
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    }

    然后在每个 Acitivity 的 onCreate 方法中添加如下代码:

    AgentApp.getInstance().addActivity(this);

    最后在你要退出应用的界面执行如下的代码:

    AgentApp.getInstance().onTerminate();

    通过将 Activity 纳入 Application 对所维护集合的管理,即可达到完美退出应用的效果。

  • 相关阅读:
    架构设计之NodeJS操作消息队列RabbitMQ
    如何搭建一个功能复杂的前端配置化框架(一)
    Web as a App(Web既APP)的概念可以提出吗?
    Bottle源码阅读笔记(二):路由
    Bottle源码阅读笔记(一):WSGI
    Python__slots__详解
    [译]如何在Web开发中使用Python
    C#中Internal关键字的总结
    [DataContract]引用
    分享一个与ABP配套使用的代码生成器源码
  • 原文地址:https://www.cnblogs.com/sunzn/p/3281137.html
Copyright © 2011-2022 走看看