Android开发安卓

Android 中管理所有的 Acyivity 活动

2020-12-11  本文已影响0人  i小灰

我们在 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.可以清晰的看到传递过来的参数,直接接受即可(重点)。

上一篇 下一篇

猜你喜欢

热点阅读