根据文档来看,只有当某个activity变得"容易"被系统销毁时onSaveInstanceState才会被调用,如果用户按back键主动去销毁一个activity,onSaveInstanceState是不会被调用的。。那有没有什么办法在用户按back键的时候也保存状态,重新启动app后恢复呢?就像手Q一样,例如手Q中展开一个联系人列表,然后按下back键退出到主屏幕,再重新点手Q图标进去,联系人列表还是保持展开状态?求大神答疑

解决方案 »

  1.   

    back了以后,会onDestroy()的,保存状态还有什么用呢。
    建议楼主可以考虑用SharedPreferences来保存一些状态,展示UI的时候,根据不同的状态来展示不同的UI。
      

  2.   

    点back不一定会销毁Activity,除非你的应用里面只有Activity,如果有service的话点back只会调用onstop 除非内存不足系统将你干掉。 当再次回到程序时 退出时是什么样回来还是什么样
      

  3.   

    找到解决办法了:  
    1.使用一个Service来保存状态 : 这个多用于activity真正的销毁了
    2. moveTaskToBack(true) : 捕获按钮事件,使用moveTaskToBack方法让activity移到后台,而不让它真正销毁  第二种方法满足我的需求    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
    //注意这一句,它重写了用户按下back键触发的事件,这里执行moveTaskToBack只是将activity移到后台,并没有销毁
                moveTaskToBack(true);
                return true;
            }        return super.onKeyDown(keyCode, event);
        }
    谢谢各位了