Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android不会保存活动的当前状态_Android - Fatal编程技术网

Android不会保存活动的当前状态

Android不会保存活动的当前状态,android,Android,我试图通过以下示例在activty的onSaveInstanceState(Bundle)方法中保存一些值: 但是它似乎没有从Oncreate()加载它。bundle对象始终为null,但每当我调用另一个活动时,它确实会进入onSaveInstanceState方法来保存我的值 现在我读了我刚刚发布的那个问题,有人注意到他们怎么不能让它在模拟器中工作?不幸的是,这就是我的全部工作。在模拟器上,无法在设备上测试应用程序,因为我现在没有可用的设备,并且与我交互的web服务位于我工作机器上的本地VM中

我试图通过以下示例在activty的onSaveInstanceState(Bundle)方法中保存一些值:

但是它似乎没有从Oncreate()加载它。bundle对象始终为null,但每当我调用另一个活动时,它确实会进入onSaveInstanceState方法来保存我的值

现在我读了我刚刚发布的那个问题,有人注意到他们怎么不能让它在模拟器中工作?不幸的是,这就是我的全部工作。在模拟器上,无法在设备上测试应用程序,因为我现在没有可用的设备,并且与我交互的web服务位于我工作机器上的本地VM中,目前无法远程访问

我的问题是,保存的包在模拟器上不起作用是真的吗?我还注意到,当我关闭或启动一个新的活动时,该活动会调用onPause,然后调用onStop。当我返回相同的activity时,它直接进入onCreate

现在,根据这里的文档,生命周期图显示的内容是正确的,但是如果您在onStop()部分阅读该图,它会说下一步是onRestart()或onDestroy()?没有提到onCreate?在文件上打字

总之,这是同一活动中的onSaveInstanceState()和onCreate():

@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的问题)