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();
          }
        });
      }
    }

  • 相关阅读:
    文件操作工具类
    批量插入数据到 MySQL的几种方式
    C#队列学习笔记:RabbitMQ使用多线程提高消费吞吐率
    C#队列学习笔记:RabbitMQ延迟队列
    C#队列学习笔记:RabbitMQ优先级队列
    C#队列学习笔记:RabbitMQ实现客户端相互通讯
    C#队列学习笔记:RabbitMQ搭建集群
    C#队列学习笔记:RabbitMQ安装及使用
    C#队列学习笔记:RabbitMQ基础知识
    C#队列学习笔记:MSMQ入门二
  • 原文地址:https://www.cnblogs.com/lxwy1992/p/4741949.html
Copyright © 2011-2022 走看看