如果想要统一的管理activity,最好的方法就是就是可以将每个activity保存在可以存放全局变量的地方此时我们就会想到使用android的Application类,一个为了那些需要保存全局变量设计的基本类
关于Application类的介绍:传送门:android Application类的详细介绍
首先创建MyApplication类,继承自Application
public class MyApplication extends Application {
private static MyApplication mInstance = null;
private List<Activity> activityList = new LinkedList<Activity>();
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
//获取MyApplication实例
public static MyApplication getInstance() {
return mInstance;
}
public void addActivity(Activity activity) {
activityList.add(activity);
}
public void exit() {
for (Activity activity : activityList) {
activity.finish();
}
}
}
上面的的代码都不难,相信大家很轻松就可以看明白
对于使用数组使用LinkedList而不是ArrayList:
1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
详细说明:传送门比较ArrayList、LinkedList、Vector
下面建立activity:
布局文件就一个Button,故不再给出。
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//先把activity加入到List中
MyApplication.getInstance().addActivity(this);
button = (Button) findViewById(R.id.btn_close);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyApplication.getInstance().exit();
}
});
}
}
按照这种方法,可以按自己的需要把activity放入到List中,进行全局管理,
最后记得在AndroidManifest.xml文件中配置application节点