两种封存状态的方法getSharedPreferences和onSaveInstanceState

两种保存状态的方法getSharedPreferences和onSaveInstanceState

虽然这些东西很简单有时候还真的让你搞混

@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"); 
} 

这个上次已经记过了用来旋转保存状态最好