美文网首页Android开发安卓
Android 中管理所有的 Acyivity 活动

Android 中管理所有的 Acyivity 活动

作者: i小灰 | 来源:发表于2020-12-11 15:37 被阅读0次

    我们在 App 中,通常会打开很多个任务栈,如果我们要退出 App,要点击返回键一步步的退出?有没有更简单的方法吗?答案是有的,我们创建一个 Activity 管理器,来统一管理 Activity。

    新建一个 ActivityCollectior 类自作为活动管理器:
    public class ActivityCollector {
    /**
    * 创建一个集合保存
    */
    public static List<Activity> activities = new ArrayList<>();

    /**
     * 添加 Activity
     * @param activity
     */
    public static void addActivity(Activity activity){
        activities.add(activity);
    }
    
    /**
     * 移除 Activity
     * @param activity
     */
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }
    
    /**
     * 移除所有 Activity
     * 
     */
    public static void finishAll(){
       for (Activity activity:activities){
           if (!activity.isFinishing()){
               activity.finish();
           }
       }
       activities.clear();
    }
    

    }
    创建一个基类,BaseActivity,让所有的 Activity 继承它。
    public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //添加创建的 Activity
        ActivityCollector.addActivity(this);
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //移除创建的 Activity
        ActivityCollector.removeActivity(this);
    }
    

    }
    随便一个 Activity 就可以退出 App,通过调用:
    ActivityCollector.finishAll();
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second2);
    ButterKnife.bind(this);
    init();
    }

    private void init() {
        tvValue.setText("这是第三个页面");
    }
    
    @OnClick({R.id.bt1, R.id.bt2})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.bt1:
                //退出App
                ActivityCollector.finishAll();
                break;
            case R.id.bt2:
                break;
            default:
        }
    }
    
    
    /**
     * Activity页面跳转建议这样写
     * @param secondActivity
     */
    public static void launch(SecondActivity secondActivity) {
        Intent intent = new Intent(secondActivity,ThirdActivity.class);
        secondActivity.startActivity(intent);
    }
    

    }
    launch()这样写的好处:
    1.别的 Activity 可以一句话调用。
    2.可以清晰的看到传递过来的参数,直接接受即可(重点)。

    相关文章

      网友评论

        本文标题:Android 中管理所有的 Acyivity 活动

        本文链接:https://www.haomeiwen.com/subject/fynoiktx.html