在Activity上调用onPause时,数据会发生什么

时间:2014-02-26 14:16:44

标签: android android-activity

我在应用上运行了一项活动,当用户点击搜索图标时,另一项活动(Google地图)会打开。  所以我假设第一个活动onPause被调用,当Maps活动完成时,第一个Activity onResume被调用。

所以我的问题是,在调用Maps活动之前,用户输入并分配给第一个活动中的变量的所有数据会发生什么变化?是否会丢失?

3 个答案:

答案 0 :(得分:2)

Android会在您开始其他活动时存储视图的用户数据。

onSaveInstanceState方法将被执行并存储数据。

  

被调用以在被杀死之前从活动中检索每个实例状态,以便可以在onCreate(Bundle)或onRestoreInstanceState(Bundle)中恢复状态(由此方法填充的Bundle将被传递给两者)。

您可以查看更多信息here

如果要保留变量,可以覆盖onSaveInstanceState

static final String STATE_SCORE = "playerScore";
...

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);

    super.onSaveInstanceState(savedInstanceState);
}

并让他们回来,

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);     
    }
    ...
}

答案 1 :(得分:1)

不,不是全部。用户输入的数据仍然存在,但您必须在

中保存变量

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }

并将其取回

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

答案 2 :(得分:0)

这取决于你的靠背没有清理的情况。请阅读并且有一些explanation