大家都知道android的内存控制,在内存不够时会回收一些系统判断为无用的东西,我现在遇到一个问题,描述如下:我做了一个应用A,A应用中使用到了地图服务,我是遍历手机内的地图软件,弹出一个列表供用户选择使用哪个应用查看位置信息。当我在A应用中使用某个地图应用打开该位置信息后,再从该地图应用返回我的应用时我发现在低内存手机上很容易发生我的应用被回收了,导致我点击应用界面(从地图应用返回后我的应用原本跳到地图应用上的那个界面还在,但是所有的数据都没有了)会报空指针异常(因为都被回收了,在我的应用中所有的对象都置空了所以会报空)。在高内存手机上我目前没有测试到,所以我得到的结论应该是手机内存太低不够运行地图软件的强制回收了我的应用的内存,导致的这个问题,现在问题来了,请问:有没有什么比较好的机制来控制不发生这种事情?即使是低内存手机。
如果没有什么方法能控制的话能不能我通过在我的应用中保存什么东西,当发生了回收后我从地图应用中返回可以使用这个保存的对象来重现之前的界面状况?不知道表述清没有,求解。谢谢!
如果没有什么方法能控制的话能不能我通过在我的应用中保存什么东西,当发生了回收后我从地图应用中返回可以使用这个保存的对象来重现之前的界面状况?不知道表述清没有,求解。谢谢!
谢谢!
有用,因为你要存的数据都持久化了, 当你回来的时候会从本地把数据导回来。跟进程被kill没有关系
我还有点不理解,这个
@Override
protected void onSaveInstanceState(Bundle outState){
outState.putString("lastPath", "/sdcard/android123/cwj/test");
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);String cwjString = savedInstanceState.getString("lastPath");
}
在我的实际应用中怎么使用?我在我需要保存这个activity和应用的所有相关信息,请问下,我在onSaveInstanceState内该保存些什么?如何保存?在onRestoreInstanceState又怎么取出来,取出来怎么使用?
sorry,我可能问得有点让人觉得抓狂,可是确实对它的使用不怎么理解啊。因为按照我的理解就算我们不重写这两个方法,android本身就有的机制其实在系统回收时其实应该也已经执行了上面的这两个函数了,但是为什么就再我的应用中又没能在返回时恢复数据呢?我想肯定还是我没能理解透彻,所以请教下你,万谢!