问题1:如果我用Activity A调用Activity B 再从B调用Activity C。在C中我调用了System.exit(0).我想知道Activity栈中是Activity C没有了,还是Activity A B C 都没有了。
PS:System.exit(0)不是杀死了当前的进程了吗,我的理解应该是Activity A B C 都没有了,不过实际好像不是这样。问题2:android:clearTaskOnLaunch=“true”的疑问;如果Activity A 中设置了android:clearTaskOnLaunch=“true”属性,然后A启动了Activity B,然后按home,再进A则不会显示B,而是显示A。问题是如果我按home后没有进A,那么这时候Activity栈中是否A和B都存在?求解
谢谢大神们,帮忙指点一二,纠结死了!

解决方案 »

  1.   

    当栈里有一个以上的Activiy,System.exit(0) 就不管用了。
      

  2.   

    发broadcast消息,每个activity中增加一个receiver,这个receiver收到broadcast时候调用,activity对象的finish方法,这样就推出了。
      

  3.   


    android:clearTaskOnLaunch=“true”,加上上面属性的activity,即该activity为A,A启动activityB,B中按home退出。再进该程序会到A而不是B。
    system.exit(0)(参见二楼的回答)。
    要退出所有的activity,从网上找的方法貌似都不太好用。最后解决也是用的4楼的方法。详细可以参见下面的网址:http://www.cnblogs.com/jauntlin/archive/2011/05/28/2060712.html。
    希望对你有帮助.
      

  4.   

    可以建一个类继承Application,里面添加成员变量Map<String, Activity> activityList,当创建一个activity是同时通过单例得到Application的实例并往activityList添加activity,system.exit(0)之前逐个将activityList中的activity finish掉