两种保存状态的方法getSharedPreferences和onSaveInstanceState
来源:互联网 发布:靠谱的淘宝化妆品代购 编辑:程序博客网 时间:2024/06/08 12:00
虽然这些东西很简单有时候还真的让你搞混
上面的方法通常保存一个activity以便下次发动
2.
这个上次已经记过了用来旋转保存状态最好
对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/
@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/
0 0
- 两种保存状态的方法getSharedPreferences和onSaveInstanceState
- 保存activity状态的方法: onSaveInstanceState()
- 学习Activity保存状态的onSaveInstanceState方法
- Android中Activity状态的保存和恢复:onSaveInstanceState和onRestoreInstanceState方法
- Android中Activity状态的保存和恢复:onSaveInstanceState和onRestoreInstanceState方法
- android onSaveInstanceState方法 横坚屏切换的状态保存
- Android中用onSaveInstanceState保存Fragment状态的方法
- Android--状态保存--onSaveInstanceState和onRestoreInstanceState的作用
- 利用onSaveInstanceState()方法保存Activity状态
- 利用onSaveInstanceState()方法保存Activity状态
- 借助onSaveInstanceState方法来保存Acitivity状态.
- Android 状态保存 生命周期 onSaveInstanceState onRestoreInstanceState 方法
- 利用onSaveInstanceState()方法保存Activity状态
- Activitty状态保存onSaveInstanceState和恢复onRestoreInstanceState
- Activity状态保存【onSaveInstanceState和onRestoreInstanceState】
- onSaveInstanceState()保存Activity状态
- android 状态保存onSaveInstanceState
- 数据共享之利用onSaveInstanceState()方法保存Activity状态
- popwindow动画显示消失,activity切换动画
- Parcelable传递图片,复杂对象,对象列表
- Linux执行 Hadoop WordCount
- C3P0异常:java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 解决
- Android studio maven pom.xml
- 两种保存状态的方法getSharedPreferences和onSaveInstanceState
- 利用matlab对图片重命名
- android
- 使用bringChildToFront()将view显示在屏幕最前方
- Android 跳转到下个Activity并将当前Activity从栈中移除
- java基础16:GUI
- 2种不同形式的跑马灯的实现
- Android杂知识点
- Gitlab简单使用指南