Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習之使用SharedPreferences存儲應用程序數據

Android學習之使用SharedPreferences存儲應用程序數據

編輯:關於Android編程

本文介紹了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軟件編程有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved