实验名称:随时结束程序
实验需求:back键可能需要按很多次,home键只是将程序暂时挂起
实验现象:在第3个活动
实验思路:设置一个专门的集合类对所有的活动进行管理。
步骤:
1、新建一个项目,创建3个活动,活动可以通过button切换
2、新建一个ActivityCollector类作为活动管理器
public class ActivityCollector {
public static List<Activity> activities=new ArrayList<>();
public static void addActivity(Activity activity){
activities.add(activity); //用于向list中添加活动
}
public static void removeActivity(Activity activity) {
activities.remove(activity); //用于从list中移除活动
}
public static void finishAll() {
for(Activity activity:activities){
if(!activity.isFinishing()){
activity.finish(); //将list中存储的活动全部销毁掉
}
}
}
}
3、新建一个BaseActivity作为项目中活动的继承类,
public class BaseActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState){ //获取实例的类名
super.onCreate(savedInstanceState); //保存实例类名
Log.d("BaseActivity",getClass().getSimpleName()); //打印
ActivityCollector.addActivity(this); //调用ActivityCollerctor中的addActivity方法
}
//@Override
protected void onDestory(){
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
4、修改第3个活动的按键事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Button button=(Button) findViewById(R.id.button3);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCollector.finishAll();//销毁该项目的所有活动
}
});
}
5、运行程序