我有Activity1 和Activity2   我先从Activity1---->startActivity()---->Activity2,然后在Activity2直接按返回键回到Activity1,根据日志我发现Activity2  被Destroy()了,请问我改如何不让它Destroy或者说保存它的状态,貌似onSaveInstaceState()那个方法没被触发,应为我Activity2是用来显示地图的,如果每次返回后再过去地图又要重新加载,感觉不好

解决方案 »

  1.   

    你截获他的返回键时间,用startActivity()跳回到Activity1么
      

  2.   


    // 键盘点击事件
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
    {
    //startActivity你堆栈形式,在这点你可以返回你的active1而不销毁,还可以做其他操作
    }
    return true;
    }
      

  3.   

    学习一下
    event.getRepeatCount()==0 这句的含义?
      

  4.   

    根据官方文档上的那个图,如果要保存数据的话,最好放在onPause方法里面。
      

  5.   

    我建议为了更好的扩展维护,不要直接按系统的返回键。自己弹一个返回的按钮,这样当你点击返回按钮时,就不会被注销了,而是变成了pause()状态,这样你就可以再跳转回来而不用再加载了。
      

  6.   

    能说具体一点吗?我最近也再学习Activity跳转保存数据问题。
      

  7.   

      呵呵   单例模式只是你创建和启动的模式  和他的这个关闭没有关系的, 如果是真实项目建议你问问你们那里的哥们  你的Activity或者你的工程做了关于这方面的设置的。 正常情况下你的Activity只会执行onstop()方法。 还有就是想问问onSaveInstaceState()是在哪一个Activity中复写的方法??
      

  8.   

    onSaveInstanceState()是在Activity2中,也就是Map的那个Activity中复写,直接返回不会被调用,但是用startActivity()跳到另一个就会被调用,返回的话,Activity2除了onStop()还有onDestroy()
      

  9.   

    是不是因为第一个acitvity被finish了?
      

  10.   

    具体情况我来解释下:onSaveInstaceState()调用的条件比较苛刻,如果Activity是因为系统的原因销毁了或者系统不敢保证你的Activity是不是被它销毁了,那么系统有义务恢复界面,这样他就会调用onSaveInstaceState()你可以在这个方法里写你要的代码但是很明显的是你的B 被backKeyDown返回了A,那么B很明显是被你销毁了,所以系统没有义务帮你恢复界面,当然也不会嗲用onSaveInstaceState()。其实你说的要求不难:首先在A中设置一个变量,拿到B中去显示,B中的修改会影响到这个变量,这样你下次再拿这个变量到B中显示,就是修改后的变量了,具体思路是这样的,请楼主测试一下
      

  11.   

    你这种情况有好多解决办法,我随便说几个
    1.将Activity2设置成singleInstance的,这样可以让它单独在一个Task中
    2.将Activity1设置成singleTask的,按返回键,用startActivity的方式跳转到Activity1
      

  12.   

    神马单例,神马singleInstance,和这个有一毛钱关系么。重写返回按键不就可以了。
      

  13.   

    监听返回键事件,返回到activity1
      

  14.   

    按还回键一定会被onDestory的这是系统调用的。
    你可以用onSaveInstanceState保存数据但是不要保存在它提供的bundle中。我遇到这个问题,当Activity onDestory后bundle就为空了。你可以保存在数据库中。在onStop时保存也可以,这看你的具体需求。