项目中经常用到点击一个按钮,然后退出整个应用的功能;又或者获取task中顶层activity是谁的功能;又或者关闭某个知道名字的activity的功能;
目前我是使用在application中建立一个ArrayList的的成员变量,把打开过的activity放进list中,然后再根据实际操作得到或关闭activity。
我知道这是个比较笨的方法,后来我改为使用广播去实现关闭多个activity的方法。
我想问 除此之外,还有没有其他方法可以管理多个activity的,例如有没有方法可以得到task里面有多少个activity,这些activity是如何排列的。ps:
有个java的小问题搞得不是很清楚,如下
String str1 = "11";
String str2= "22";
ArrayList list = new ArrayList();
list.add(str1);
list.add(str2);
添加对象后,arraylist占用的内存是不是必定比str1的内存加上str2的内存大(占用两个堆的内存)?
还是arraylist只需保存两个栈引用(也就是占用两个栈左右的内存),这两个栈再各自指向堆?不知道自己有没有说清楚 ,求大神回复!谢谢javaandroidactivity

解决方案 »

  1.   

    ArrayList list = new ArrayList();
    list.add(str1);
    list.add(str2);
    这个肯定比定义2个字符串加起来大,ArrayList里面有接口和数组数据结构。
    字符串会放入到String池中。
      

  2.   

    你写ArrayList的思路是对的啊可以自己维护一个ActivityManager的栈,每次新建了一个Activity就压,finish了就退栈。对栈的维护的话,网上资料很多咯。。
      

  3.   

    list 这个变量(一个List类型的引用)在栈中,它所指向的对象在堆中,栈中肯定存放的是一个地址,至于这个地址是不是直接指向堆中那个对象的地址,不同的jvm有不同的做法,有的是先指向java堆中的句柄池中的某个地址,然后该地址再指向对象实例;有的是直接指向堆中的对象实例ArrayList 继承自AbstractList,AbstractList继承自AbstractCollection网上找的,看起来挺靠谱