天天看點

sharedPreferences

sharedpreferences (共享參數):也是儲存資料的一種方法,通常用于持久化資料(定期更新儲存資料)類似ajax的定時重新整理。

示例代碼(主要來源于黑馬教程)如下:

import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.view.Menu;
import android.widget.EditText;

public class MainActivity extends Activity {
	protected static final String TAG = "MainActivity";
	private EditText et_title;
	private EditText et_content;
	private Timer timer;
	private TimerTask task;
	private SharedPreferences sp;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et_title = (EditText) findViewById(R.id.et_title);
		et_content = (EditText) findViewById(R.id.et_content);

		//得到系統的參數的保持器,類似于new檔案對象,把内容儲存在info.xml檔案中
		sp = this.getSharedPreferences("info", MODE_PRIVATE);

		String title = sp.getString("title", "");
		String content = sp.getString("content", "");
		et_content.setText(content);
		et_title.setText(title);

		timer = new Timer();
		task = new TimerTask() {

			@Override
			public void run() {
				Log.i(TAG,"定期儲存資料");

				String title = et_title.getText().toString().trim();
				String content = et_content.getText().toString().trim();
				//得到參數檔案的編輯器.
				Editor editor = sp.edit(); //類似得到輸出流.

				//通過xml檔案來存儲資料
				editor.putString("title", title);
				editor.putString("content", content);

				//editor.putInt("intnumber", 333);
				//editor.putBoolean("booleanresuklt", false);

				editor.commit();//把資料送出到參數檔案裡面. 類似資料庫的事務(commit,rollback)
			}
		};
		timer.schedule(task, 2000, 5000);//每個5s執行一次任務
	}

}

總結sharedpreferences的使用方法:

  1)通過上下文環境(this)擷取參數的保持器--> this.getSharedPreferences("info", MODE_PRIVATE);同時可以設定檔案名與模式;

  2)通過參數保持器獲得參數檔案的編輯器--> Editor editor = sp.edit();類似與java中普通檔案的輸出流,可用于檔案寫操作
  (支援寫各種不同類型的資料editor.putInt();editor.putString();...);

  3)最後通過方法 editor.commit();把寫好的資料一次性送出到指定的參數檔案中(xml檔案);

  PS:此示例中,除了要學會sharedpreferences的用法外,還要學習或者加深對Timer and TimerTask 的一般用法(java知識)