2011年6月13日月曜日

SharedPreferencesを利用してアプリの起動回数をカウントする

このエントリーをはてなブックマークに追加
SharedPreferencesクラスはプリファレンスを実現する手段のひとつです。プリファレンスとはデータをキーと値のペアで保存する仕組みです。このプリファレンスを利用して、アプリの起動回数を保持するプログラムを作成してみました。



プリファレンスの利用手順
1. SharedPreferencesインスタンスの取得
ActivityクラスのgetSharedPreferencesメソッドによりSharedPreferencesインスタンスを取得します。
public SharedPreferences getSharedPreferences(String name, int mode)

nameはデータを保存するファイル名です。データはxml形式のファイルとして保存されます。modeはファイルをどのように操作するかを指定する引数で、次のようなmodeがあります。

MODE_PRIVATE : 呼び出したアプリからのみ読み書き可能
MODE_WORLD_READABLE : 他アプリから読み取り可能
MODE_WORLD_WRITEABLE : 他アプリから書込み可能


2. 値の取得
getIntメソッドでint型の値を取得します。第一引数はキーで、第二引数はデフォルトの値です。getIntの他に、getBooleanやgetString等の基本型やStringクラスの値を取得するメソッドもあります。


3. 値の編集
editメソッドでプリファレンスを編集するためのSharedPreferences.Editorインスタンスを取得します。次にputIntでint型の値を追加します。第一引数はキーで、第二引数は値です。最後にcommitで編集した値を反映させます。


プログラム
アプリの起動回数をカウントしてログに表示するプログラムを次のように作成しました。

/SGL/src/sgl/example/preference/PreferenceTest.java
package sgl.example.preference;

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.util.Log;

public class PreferenceTest extends Activity{
     private final String TAG = "PreferenceTest";
     private final String NAME = "name";
     private final String KEY = "key";
     SharedPreferences sharedPreferences;
     private int count = 0;

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          Log.i(TAG, "onCreate");
          sharedPreferences = this.getSharedPreferences(NAME, MODE_PRIVATE);
          count = sharedPreferences.getInt(KEY, 0);
          count++;
          Log.i(TAG, "count = " + count);
          Editor editor = sharedPreferences.edit();
          editor.putInt(KEY, count);
          editor.commit();
     }

     @Override
     public void onDestroy() {
          super.onDestroy();
          Log.i(TAG, "onDestroy");
     }
}

実行結果
アプリの起動と停止を4回繰り返しました。起動回数がログへ正常に表示されました。


また、保存されるデータは次の場所に格納されているようです。
/data/data/[パッケージ名]/shared_prefs/[ファイル名].xml

adb shellを利用してそのファイルを見てみると、確かに値が保存されていました。


参考:adbを使用してみた(前編)
参考:adbを使用してみた(後編)

0 件のコメント:

コメントを投稿