Android學習之使用SharedPreferences儲存應用程式資料

Android學習之使用SharedPreferences儲存應用程式資料
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

本文介紹了SharedPreferences儲存應用程式資料的具體步驟,供大家參考,具體內容如下

1、SharedPreferences的簡單介紹
應用程式在執行的時候,可能會隨著使用者的使用而保持該使用者的配置資訊,如上次播放時的eq設定,音量設定,上網的cookies資訊等等,這些小量 的資訊可以通過SharedPreferences來保持,通過SharedPreferences保持的資料為一個XML檔案,位於應用程式的私有資料夾。
2、具體操作方法
獲取SharedPreferences,可以通過以下方法獲取:

引數簡述:
Name————獲得SharedPreferences之後,將會在應用程式的私有資料夾中儲存著一個XML檔案,第一個引數name就是這個檔名字。
Mode————XML檔案的儲存模式,預設為0,也就是MODE_PRIVATE

3、簡單的demo
通過service的一個音樂播放例子,“播放”與“暫停”兩個按鈕
暫停之後,保持播放進度到SharedPreferences裡面,然後再次播放的話,讀取進度值進行音樂播放。


/* 
* @author:conowen 
* @date:12.3.01 
* 
*/ 
package com.conowen.sharedpreferences; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
public class SharedPreferencesActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Button play = (Button) findViewById(R.id.play);  
Button pause = (Button) findViewById(R.id.pause);  
final Intent intent = new Intent(SharedPreferencesActivity.this,service.class);  
// 定義intent為final,全域性變數,供下面兩個匿名內部類(onclicklisenter)使用  
play.setOnClickListener(new OnClickListener() {  
@Override  
public void onClick(View v) {  
// TODO Auto-generated method stub  
startService(intent);  
// 開始播放,通過前面定義好的intent傳遞  
}  
});  
pause.setOnClickListener(new OnClickListener() {  
@Override  
public void onClick(View v) {  
// TODO Auto-generated method stub  
stopService(intent);  
// 停止播放  
}  
});  
} 
} 

第二個class是繼承service的,記得在manifest.XML裡面註冊service


/* 
* @author:conowen 
* @date:12.3.01 
* 
*/ 
package com.conowen.sharedpreferences; 
import android.app.Service; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.media.MediaPlayer; 
import android.os.IBinder; 
public class service extends Service { 
MediaPlayer player; 
// 新建播放器 
@Override 
public void onCreate() { 
// TODO Auto-generated method stub 
super.onCreate(); 
player = MediaPlayer.create(this, R.raw.lt26); 
player.setLooping(true); 
// 兩種方式的第一個生命週期都是onCreate() 
} 
@Override 
public void onStart(Intent intent, int startId) { 
// TODO Auto-generated method stub 
super.onStart(intent, startId); 
SharedPreferences sp = this.getSharedPreferences("music_progress", 
MODE_PRIVATE); 
// music_progress為XML檔案的檔名 
player.seekTo(sp.getInt("progress", 0)); 
// progress為鍵值對中的key,progress所對應的值通過player.getCurrentPosition()獲得,請看下面詳細 
// 每次呼叫onStart方法時,就會設定player的進度 
// MediaPlayer的seekTo方法,讀取進度,然後播放,getInt的第一個引數是所要讀取的key名字,第二個引數為預設初始值。也就是說進度初始預設為0 
player.start(); 
} 
@Override 
public void onDestroy() { 
// TODO Auto-generated method stub 
super.onDestroy(); 
SharedPreferences sp = this.getSharedPreferences("music_progress", 
MODE_PRIVATE); 
sp.edit().putInt("progress", player.getCurrentPosition()).commit(); 
// player.getCurrentPosition()方法獲取播放進度的資料 
// commit()方法是儲存SharedPreferences獲取來的資料 
player.stop(); 
} 
@Override 
public IBinder onBind(Intent intent) { 
// TODO Auto-generated method stub 
return null; 
} 
} 

通過SharedPreferences儲存的文件如下所示,開啟DDMS,切換到File Explore,在私有目錄下的shared_prefs資料夾裡面,路徑為
/data/data/你的包名/shared_prefs

內容如下


<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<int name="progress" value="90695" /> 
</map> 

相關文章

Android 開發 最新文章