这个功能实现的功能是希望不管在应用栈的哪一层,均可以返回主页面。具体的实现过程是需要一个工具类的列表存储记录所有的应用 Activity,然后在程序退出时,将Activity全部清空,代码如下:
1 ActivityCollector 代码
public static List<Activity> activities=new ArrayList<>();
public static void addActivity(Activity activity){
if(activity!=null){
activities.add(activity);
}
}
public static void removeActivity(Activity activity){
activities.remove(activity);
}
public static void finishAll(){
for(Activity a:activities){
if(!a.isFinishing()){
a.finish();
}
}
activities.clear();
}
2 重写 AppCompatActivity 的 onCreate 和 onDesory 方法,类名为 BaseActivity
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
3 声明一个新的Activity类进行调用 ActivityCollector 中的 finishAll 方法
public class ExitButtonActivity extends BaseActivity {
private Button exitBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exit_button);
initView();
}
public void initView(){
Button btn=findViewById(R.id.exit_btn);
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
}
}
4 通过更改一些布局文件进行更改APP的样式信息,从而实现随时随地退出的功能。