虽然这些东西很简单有时候还真的让你搞混
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
上面的方法通常保存一个activity以便下次发动
2.
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putBoolean("MyBoolean", true);
savedInstanceState.putDouble("myDouble", 1.9);
savedInstanceState.putInt("MyInt", 1);
savedInstanceState.putString("MyString", "Welcome back to Android");
// etc.
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
double myDouble = savedInstanceState.getDouble("myDouble");
int myInt = savedInstanceState.getInt("MyInt");
String myString = savedInstanceState.getString("MyString");
}
这个上次已经记过了用来旋转保存状态最好
对onSaveInstanceState的解释:
为了获取activity被杀死前的状态,你应该为activity实现onSaveInstanceState() 方法。Android在activity有可能被销毁之前(即onPause() 调用之前)会调用此方法。它会将一个以名称-值对方式记录了activity动态状态的Bundle 对象传递给该方法。当activity再次启动时,这个Bundle会传递给onCreate()方法和随着onStart()方法调用的onRestoreInstanceState(),所以它们两个都可以恢复捕获的状态。
与onPause()或先前讨论的其它方法不同,onSaveInstanceState() 和 onRestoreInstanceState() 并不是生命周期方法。它们并不是总会被调用。比如说,Android会在activity易于被系统销毁之前调用 onSaveInstanceState(),但用户动作(比如按下了BACK键)造成的销毁则不调用。在这种情况下,用户没打算再次回到这个activity,所以没有保存状态的必要。
因为onSaveInstanceState()不是总被调用,所以你应该只用它来为activity保存一些临时的状态,而不能用来保存持久性数据。而是应该用onPause()来达到这个目的。
Google为何这样设计OnSharedPreferenceChangeListener
http://droidyue.com/blog/2014/11/29/why-onsharedpreferencechangelistener-was-not-called/
分享到:
相关推荐
即便是Android小白都知道的SharedPreferences的用法,这是保存数据最简便的方法,但是不处理好的话后期维护将是一个巨大的坑。那么该如何处理好SharedPreferences才方便维护呢。先从它的特点开始入手吧。 通过...
保存用户名密码小实例 SharedPreferences sp = getSharedPreferences(PREFS_NAME, 0);
实验 如何读SharedPreferences记录数据 和写数据类似,需要getSharedPreferences返回应用中的数据对象,但不需要返回editor。 通过getString getInt等方法获得指定数据,如果数据不存在,方法会提供默认值。 谢谢 ...
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能...
获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两种方式的区别: 调用Context对象的getSharedPreferences()方法获得的...
android SharedPreferences实例
保存数据的四种方式,网络,广播提供者,SharedPreferences,数据库 获取SharedPreferences对象,通过getSharedPreferences()方法,参数:名称,模式 例如config,MODE_PRIVATE 调用SharedPreferences对象的edit()...
在Android程序开发中我们经常遇到四种数据存储方式,每种存储方式都各有不同;以下我分别列举了Android开发中的不同存储方式的特点 一,Preferences Preferences是一个较轻量级的存储数据的方法,具体使用方法: ...
Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE) .edit(); sp.putLong(key, value); sp.commit(); } /** * 存储数据(Int) * * @param context * @param key * @...
当 SharedPreferences 文件还没有被加载到内存时,调用 getSharedPreferences 方法会初始化文件并读入内存,这容易导致 耗时更长。 Editor 的 commit 或者 apply 方法的区别在于同步写入和异步 写入,以及是否需要...
四、实验用的仪器和材料: PC+Eclipse+ADT 五、实验的步骤和方法: 1、读写其他应用程序SharedPreferences。 读写其他应用程序的SharedPreferences,步骤如下: 创建应用App1 和应用App2,App2尝试读取App1的...
共享首选项用于访问和修改Context.getSharedPreferences(String,int)返回的首选项数据的接口。 对于任何特定的首选项集,所有客户端都共享一个此类的单个实例。 对首选项的修改必须经过一个Editor对象,以确保首...
分别使用getPreferences()和getSharedPreferences()建立xml文件,UI上输入数据类型、键、值之后点击保存即可。 可以使用adb查看data/data/<package-name>/shared_prefs/路径下生成的xml,也可以通过输入键名点击Read...
Android 程序技术 ...PART 1 1.1 SharedPreferences的使用 ...SharedPreferences的使用 The use of the SharedPreferences ...SharedPreferences sp = getSharedPreferences ("data",MODE_PRIVATE); String data = sp.get
安卓国际化,在安卓应用内切换语言。 如果要保存设置后的语言,使用getSharedPreferences保存,在启动应用的时候,再读取即可。
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在”/data/data<package>/shared_prefs”目录下。 SharedPreferences的用法: 由于...
Android数据共享 sharedPreferences 的使用方法 Android 中通过 sharedPreferences 来持久化存储数据并进行共享 在 Activity 或存在 Context 环境中即可使用 context.getSharedPreferences(name, Context.MODE_...
2.首先在onCreate方法中调用此方法查看上一次保存的是什么语言 public void setLanguage() { //根据读取到存放在sp里面的数据 进行设置 Configuration configuration = getResources().getConfiguration(); ...
SharePreferences SharePreferences存储 2021-4-5 将数据存储到SharedPreferences中 调用SharedPreferences对象的...TextUtils.isEmpty()可以用来判断两个空值,字符串等于null或者等于空字符串时,这个方法都会返回
SharedPreferences sp = this.getSharedPreferences("pwd", Context.MODE_PRIVATE);