android app 运行时,用户到后台去设置中,关掉正在运行app的某个已经授予的权限,这时候系统会把之前的app进程杀掉,在创建一个进程,并回到之前的界面。这样会出现一些问题:之前的界面有些值会变为空,存在application里的变量会为空(比如管理activity的栈中 list<Activity> mList 之前存的值会变为0);SharePreferences无法使用,因为之前的进程被干掉了,context为空;现在解决方式是:让app重新启动,登陆,到主页,这是一般的app的解决办法,请问如何做到呢? 较为牛逼的做法是微信的:他会回到之前运行的界面,不知道这个怎么实现的?有没有大神帮助解决一下,说一下思路。

解决方案 »

  1.   

    重启就是干掉app然后重新new application,并且会重新调用application的onCread的,被kill时系统会回调app的(自行百度)。类似Context和SharePreferences这种一般都是在onCreated初始化,这样就永远不会出现空的情况(因为application在app就在,application亡APP就亡)
      

  2.   

    界面间传值最好都用intent,跨多界面也尽量不要用application保存,浪费内存还不稳定