在我的代碼中,我開始了街景的新活動。主要應用程序在啓動街景活動後死亡
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