gpt4 book ai didi

android - 为一个简单的应用程序处理 Android 中的运行时更改——我需要使用 Bundle 吗?

转载 作者:行者123 更新时间:2023-11-30 03:50:04 25 4
gpt4 key购买 nike

我正在制作我的第一个 Android 应用程序,其中仅包含 editText 和 Spinner。阅读 Activity 周期,我想知道在我的情况下是否有必要使用 Bundle 机制。

由于小部件的状态会自动持久化 -我可以只在 Activity 的 onCreate() 方法中调用微调器上的 getSelectedItem() 方法和 EditText 上的 getText() 方法并将其传递给我新创建的模型对象,而不是使用 Bundle 机制吗?这种方法的优点和缺点是什么?

最佳答案

小部件的状态不会自动保留。当您的 Activity 被销毁时,它会丢失所有有关状态的信息。我建议您使用共享首选项保存应用程序状态。这是来自谷歌的示例 developers site .它允许您通过存储键值对来保存您的应用程序状态,这对您的应用程序来说应该足够了。

当您的 Activity 停止时,在共享首选项中保存文本和微调项位置 - onStop() 并在 onCreate() 中恢复状态。

public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";

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

// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}

@Override
protected void onStop(){
super.onStop();

// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);

// Commit the edits!
editor.commit();
}
}

虽然您可以通过 onSaveInstanceState(Bundle) 方法保存您的应用程序状态,但通常更好的方法是在 onPause()onStop( ) 方法(数据肯定会被保存)。文档说:

Note that it is important to save persistent data in onPause() instead of onSaveInstanceState(Bundle) because the latter is not part of the lifecycle callbacks, so will not be called in every situation as described in its documentation.

关于android - 为一个简单的应用程序处理 Android 中的运行时更改——我需要使用 Bundle 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com