Android不会保存活动的当前状态
我试图通过以下示例在activty的onSaveInstanceState(Bundle)方法中保存一些值: 但是它似乎没有从Oncreate()加载它。bundle对象始终为null,但每当我调用另一个活动时,它确实会进入onSaveInstanceState方法来保存我的值 现在我读了我刚刚发布的那个问题,有人注意到他们怎么不能让它在模拟器中工作?不幸的是,这就是我的全部工作。在模拟器上,无法在设备上测试应用程序,因为我现在没有可用的设备,并且与我交互的web服务位于我工作机器上的本地VM中,目前无法远程访问 我的问题是,保存的包在模拟器上不起作用是真的吗?我还注意到,当我关闭或启动一个新的活动时,该活动会调用onPause,然后调用onStop。当我返回相同的activity时,它直接进入onCreate 现在,根据这里的文档,生命周期图显示的内容是正确的,但是如果您在onStop()部分阅读该图,它会说下一步是onRestart()或onDestroy()?没有提到onCreate?在文件上打字 总之,这是同一活动中的onSaveInstanceState()和onCreate():Android不会保存活动的当前状态,android,Android,我试图通过以下示例在activty的onSaveInstanceState(Bundle)方法中保存一些值: 但是它似乎没有从Oncreate()加载它。bundle对象始终为null,但每当我调用另一个活动时,它确实会进入onSaveInstanceState方法来保存我的值 现在我读了我刚刚发布的那个问题,有人注意到他们怎么不能让它在模拟器中工作?不幸的是,这就是我的全部工作。在模拟器上,无法在设备上测试应用程序,因为我现在没有可用的设备,并且与我交互的web服务位于我工作机器上的本地VM中
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
Log.d(TAG, "SAVING OauthManager in onSaveInstanceState");
// TODO: if works, we need to save the my network list HashMap as well
// so we dont make a call to the platform everytime we refresh this
// screen
// savedInstanceState.putSerializable("oauthManager", mOathManager);
// Log.d(TAG, "finished saving");
// super.onSaveInstanceState(savedInstanceState);
// Log.d(TAG, "super.onSaveInstanceState(savedInstanceState)");
savedInstanceState.putString(USER_CONSUMER_ID,
mSavedUserConsumerTokenId);
savedInstanceState.putString(USER_CONSUMER_SECRET,
mSavedUserConsumerSecret);
savedInstanceState.putString(URL_REQUEST_TOKEN, mSavedRequestTokenUrl);
savedInstanceState.putString(URL_ACCESS_TOKEN, mSavedAccessTokenUrl);
savedInstanceState.putString(URL_AUTHORIZE_TOKEN,
mSavedAuthorizeTokenUrl);
super.onSaveInstanceState(savedInstanceState);
}
我的onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.d(TAG, " ");
Log.d(TAG, "onCreate");
Log.d(TAG, "///////////////////////////////////////");
Log.d(TAG, "///////////////////////////////////////");
super.onCreate(savedInstanceState);
Log.d(TAG, "super.onCreate(savedInstanceState);");
setContentView(R.layout.network_list);
mContext = getApplicationContext();
mIntent = getIntent();
mGoogleButton = (Button) findViewById(R.id.googleAddOrRemoveButton);
mFacebookButton = (Button) findViewById(R.id.facebookAddOrRemoveButton);
mLinkedInkButton = (Button) findViewById(R.id.linkedInAddOrRemoveButton);
mPopEmailButton = (Button) findViewById(R.id.popEmailAddOrRemoveButton);
if (savedInstanceState != null) {
Log.d(TAG, "inside if (savedInstanceState != null) {");
Log.d(TAG, "savedInstanceState != null");
// mOathManager = (OAuthManager) savedInstanceState
// .getSerializable("oauthManager");
mSavedUserConsumerTokenId = savedInstanceState
.getString(USER_CONSUMER_ID);
mSavedUserConsumerSecret = savedInstanceState
.getString(USER_CONSUMER_SECRET);
mSavedRequestTokenUrl = savedInstanceState
.getString(URL_REQUEST_TOKEN);
mSavedAccessTokenUrl = savedInstanceState
.getString(URL_ACCESS_TOKEN);
mSavedAuthorizeTokenUrl = savedInstanceState
.getString(URL_AUTHORIZE_TOKEN);
mOathManager = new OAuthManager(mContext, getIntent(),
mSavedUserConsumerTokenId, mSavedUserConsumerSecret,
mSavedRequestTokenUrl, mSavedAccessTokenUrl,
mSavedAuthorizeTokenUrl, CALLBACK_URI);
mOathManager.requestUserRequestToken();
} else{
Log.d(TAG, "savedInstanceState is null and loading the list again");
GetNetworkListTask getNetworkListTask = new GetNetworkListTask();
getNetworkListTask.execute();
}
}
bundle对象始终为null,但每当我关闭activty时,它确实会进入onSaveInstanceState方法来保存我的值
如果“dismise”的意思是“按下后退按钮”,则来自onSaveInstanceState()
(如果有)的捆绑包将被丢弃,因为用户已指示他们已完成活动。onSaveInstanceState()
捆绑包
用于用户尚未表示已完成活动(例如,他们接受了来电)但Android选择销毁活动以释放RAM的情况
我的问题是,保存的包在模拟器上不起作用是真的吗
onSaveInstanceState()
在模拟器中工作得非常好。在模拟器中测试saveInstanceState()的最简单方法是更改屏幕方向([Ctrl]-[F11])
我还注意到,当我关闭或启动一个新的活动时,该活动会调用onPause,然后调用onStop。当我返回相同的activity时,它直接进入onCreate
你对Android有一些基本的误解,远远超出了一个单一答案的范围
但是,如果您阅读下面的onStop()部分的图表,它会说下一步是onRestart()或onDestroy()?没有提到onCreate?在文件上打字
这个图表大体上是正确的。有些情况下,onDestroy()
不会被调用(例如,紧急RAM回收迫使进程被终止),但这种情况并不常见。我不太了解android,但我只参考了文档,可能是一个潜在的问题,即包没有正确加载或保存。当我指的是解散时,我指的是另一项活动启动时。我将在我的帖子中反映这一点。嗨,你能解决这个问题吗。我在摩托罗拉的milestone手机上遇到过这个问题(我试过的emulator和其他几款手机似乎没有保存InstanceState但不恢复InstanceState的问题)