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

  • 相关阅读:
    sublime问题:失去焦点自动保存
    sublime问题:Tab键不缩进
    sublime问题:默认的中文字体显示异常
    pip换源 解决下载速度慢
    Oracle问题:ORA-01843: 无效的月份
    Eclipse设置自动生成的javadoc
    Java命名规范
    redis的道面试题, 有这一篇就足够了
    批量编译生成python的pyd文件
    测试种类大汇总(45类)
  • 原文地址:https://www.cnblogs.com/lxwy1992/p/4741949.html
Copyright © 2011-2022 走看看