zoukankan      html  css  js  c++  java
  • Android笔记:管理所有活动

    以关闭所有活动为例

    public class ActivityCollector {
      public static List<Activity> activities = new ArrayList<Activity>();
      public static void addActivity(Activity activity) {
        activities.add(activity);
      }
      public static void removeActivity(Activity activity) {
      activities.remove(activity);
      }
      public static void finishAll() {
        for (Activity activity : activities) {
          if (!activity.isFinishing()) {
            activity.finish();
          }
        }
      }
    }

    在活动管理器中,通过一个List 来暂存活动,然后提供了一个addActivity()方法用于向List 中添加一个活动,

    提供了一个removeActivity()方法用于从List 中移除活动,最后提供了一个finishAll()方法用于将List 中存储的活动全部都销毁掉。

    public class BaseActivity extends Activity {
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("BaseActivity", getClass().getSimpleName());
        ActivityCollector.addActivity(this);
      }
      protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
      }    
    }


    在BaseActivity 的onCreate()方法中调用了ActivityCollector 的addActivity()方法,表明将当前正在创建的活动添加到活动管理器里。

    然后在BaseActivity 中重写onDestroy()方法,并调用了ActivityCollector 的removeActivity()方法,表明将一个马上要销毁的活动从活动管理器里移除。

    从此以后,不管想在什么地方退出程序,只需要调用ActivityCollector.finishAll()方法就可以了。例如在ThirdActivity 界面想通过点击按钮直接退出程序,只需将代码改成如下所示:

    public class ThirdActivity extends BaseActivity {
    @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("ThirdActivity", "Task id is " + getTaskId());
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.third_layout);
        Button button3 = (Button) findViewById(R.id.button_3);
        button3.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
            ActivityCollector.finishAll();
          }
        });
      }
    }

  • 相关阅读:
    Windows 经典DOS命令大全
    Linux常用命令大全(全面)
    Nova 实现的 Fit Instance NUMA to Host NUMA 算法
    计算机组成原理 — 冯诺依曼体系结构
    计算机组成的基本硬件设备
    OpenStack 高性能虚拟机之大页内存
    Ironic 的 Rescue 救援模式实现流程
    SQLite 版本引发的 Python 程序调用问题
    Ceph 故障修复记录(持续更新)
    注册 Ironic 裸金属节点并部署裸金属实例
  • 原文地址:https://www.cnblogs.com/lxwy1992/p/4741949.html
Copyright © 2011-2022 走看看