在我的代码中,我开始了街景的新活动。主要应用程序在启动街景活动后死亡
Intent streetView = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(streetView);
它启动街景就好了。如果我没有做太多的事情,我可以点击后退按钮,我的应用程序就坐在那里等待没有任何变化。
不过,如果我使用街景视图了一下,环顾四周并移动的看法,我看到这个在logcat中:
10月1日至27日:53:27.526:信息/ ActivityManager(1079):低内存:没有更多的后台进程。
10月1日至27日:53:27.636:DEBUG/dalvikvm(32218):GC_FOR_MALLOC释放在655ms
10月1日至27日3054级的对象/ 198608字节:53:27.831:DEBUG/dalvikvm(32164):GC_FOR_MALLOC释放1054级的对象/在342ms
十月1日至27日51664字节:53:27.862:INFO/dalvikvm堆(32164):生长堆(FRAG情况下),以用于3.656MB 87396字节分配
01- 27 10:53:27.878:INFO/ActivityManager(1079):进程com.favorite.me(pid 32135)已经死亡。
10月1日至27日:53:27.878:INFO/ActivityManager(1079):内存不足:没有更多的后台进程。
10月1日至27日:53:27.482:INFO/ActivityManager(1079):进程com.myapp.app(PID 31481)已经死亡。
10月1日至27日:53:27.490:INFO /窗口管理(1079):WIN死亡:窗口{44c68ba8 com.myapp.app/com.myapp.app.MyLocation暂停= FALSE}
然后,当我点击后退按钮返回到我的应用程序,似乎所有的变量已被重置为空,就像我失去了我的应用程序的状态。解决问题的唯一方法是再次点击后退按钮并重新启动该活动。
从我可以告诉,它不是调用的onPause()或的onSaveInstanceState()方法和OS是杀死我的应用程序的内存来运行街景。
有什么我需要做不同?
这里是我的OnCreate,onRestoreInstanceState的onSaveInstanceState和方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
sLong = savedInstanceState.getDouble("sLong");
sLat = savedInstanceState.getDouble("sLat");
sMapStyle = savedInstanceState.getBoolean("sMapStyle");
sMapUpdate = savedInstanceState.getBoolean("sMapUpdate");
sMapStreet = savedInstanceState.getBoolean("sMapStreet");
sFirstTime = savedInstanceState.getBoolean("sFirstTime");
locationAvailable = savedInstanceState.getBoolean("locationAvailable");
sGPSFlag = savedInstanceState.getBoolean("sGPSFlag");
sMessage = savedInstanceState.getString("sMessage");
sMap = savedInstanceState.getString("sMap");
sGPS = savedInstanceState.getString("sGPS");
sAddressIn = savedInstanceState.getString("sAddressIn");
sGPSLat = savedInstanceState.getString("sGPSLat");
sGPSLong = savedInstanceState.getString("sGPSLong");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putDouble("sLong",sLong);
savedInstanceState.putDouble("sLat",sLat);
savedInstanceState.putBoolean("sMapStyle",sMapStyle);
savedInstanceState.putBoolean("sMapUpdate",sMapUpdate);
savedInstanceState.putBoolean("sMapStreet",sMapStreet);
savedInstanceState.putBoolean("sFirstTime",sFirstTime);
savedInstanceState.putBoolean("locationAvailable",locationAvailable);
savedInstanceState.putBoolean("sGPSFlag",sGPSFlag);
savedInstanceState.putString("sMessage",sMessage);
savedInstanceState.putString("sMap",sMap);
savedInstanceState.putString("sGPS",sGPS);
savedInstanceState.putString("sAddressIn",sAddressIn);
savedInstanceState.putString("sGPSLat",sGPSLat);
savedInstanceState.putString("sGPSLong",sGPSLong);
}
我想我可能对为什么会这样领先。仍然不确定它有多正确。 我设置了一些调试消息,我看到onRestoreInstanceState()
和onSaveInstanceState()
方法运行。
问题是,它不会将我保存的实例恢复到之后我的onCreate()
方法结束。但是在onCreate()
方法中,我需要这些变量在这个时候仍然是空的。如何让我的代码在onCreate()
之后运行,但不需要任何用户输入?或者我怎样才能在我的代码之前运行onRestoreInstanceState()
?
你怎么知道'onpause()`和`onSaveInstanceState()`没有被调用?你是否试图在这些方法中的一个(或两个)中保存你的状态?你记录了他们的电话吗? – 2011-01-27 16:34:31
从logcat中告诉我暂停= false。所以它看起来不像它的运行onpause()。另外我把我试图保存在我的onSaveInstanceState()方法中的变量。 – Brian 2011-01-27 17:39:41