`

android中的状态保存

阅读更多
package com.zzl.call;

import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.Toast;
/**
 * Activity状态的保存
 * 
 * 
 * 第一,在onSaveInstanceState函数中进行数据的保存
 * 这个函数只有在Activity销毁的时候才会被调用,按下home键、back键不会调用此函数。
 * 在onCreate函数中获取保存的数据。
 * 在2.0之后又出现了一个函数叫:onRestoreInstanceState获取保存的数据,
 * 这个函数在onCreate函数之后调用。
 * 如果onCreate函数中不进行try的话会报如下异常。
 * java.lang.NullPointerException

 *
 *
 *第二,在onPause函数中进行数据的保存,在onResume中取出数据。
 *此时就要用到 SharedPreferences 。
 */
public class MainActivity extends Activity {
	
	private SharedPreferences sharedPreferences;   
    private SharedPreferences.Editor editor;   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
        	String str = savedInstanceState.getString("key");
		} catch (Exception e) {
			e.printStackTrace();
		}
        
        
        
        sharedPreferences = this.getSharedPreferences("test",MODE_WORLD_READABLE);   
        editor = sharedPreferences.edit();  
        
    }
    @Override
    protected void onResume() {
    	//第二个参数的含义是如果获取不到数据,就以这个作为返回值
    	String name = sharedPreferences.getString("name", "阿弥陀佛");   
    	Toast.makeText(this, name, 0).show();
    	super.onResume();
    }
    
    @Override
    protected void onSaveInstanceState(Bundle outState) {
    	if(outState != null){
    		outState.putString("key", "value");
    	}
    	super.onSaveInstanceState(outState);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    	super.onRestoreInstanceState(savedInstanceState);
    }
    
    @Override
    protected void onPause() {
    	editor.putString("name", "无敌小神胖");   
        // 一定要提交   
        editor.commit();   

    	super.onPause();
    }
    
    
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics