AndroidのSharedPreferencesの使用保存ユーザー設定
6101 ワード
SharedPreferencesはAndroidプラットフォーム上の軽量級のストレージクラスで、主にウィンドウ状態などの一般的な構成を保存しています.一般的にActivityでウィンドウ状態onSaveInstanceState保存はSharedPreferencesで一般的に行われています.Androidプラットフォームの通常のLong長整形、Int整形、String文字列型の保存を提供しています.どのような処理方式ですか.SharedPreferencesは、過去のWindowsシステム上のiniプロファイルに似ていますが、グローバル共有アクセスが可能な複数の権限に分かれています.android 123は、最終的にxmlで保存されることを示しています.全体的な効率は特に高くありません.通常の軽量レベルではSQLiteよりも多く、実際のストレージ量が少ない場合は、自分で定義したファイルフォーマットを考慮することはできません.xml処理時にDalvikは、XML pull方式などの最下位レベルのローカルXML Parser解析を行うことで、メモリリソースの使用に適しています.
この方法は、最も簡単なAndroidで外部データを読み書きする方法であるはずです.彼の使い方は基本的にJ 2 SE(java.util.prefs.Preferences)の使い方と同じで、ユーザーがカスタマイズしたフォント、色、位置などのパラメータ情報を簡単で透明な方法で保存します.一般的なアプリケーションでは、「設定」や「プリファレンス」というインタフェースが提供されています.これらの設定は最後にPreferencesで保存できますが、プログラマーはどのような形式で保存されているのか、どこに保存されているのかを知る必要はありません.もちろん、他のものを保存したいなら、制限はありません.ただ、性能的には何が問題なのか分かりません.
Androidシステムでは、これらの情報はXMLファイルとして/data/data/PCMAGE_に保存されています.NAME/shared_prefsディレクトリの下.
以下は小さなdemoです
activity_main.xml
string.xml
main.activity
PreferencesService.class
この方法は、最も簡単なAndroidで外部データを読み書きする方法であるはずです.彼の使い方は基本的にJ 2 SE(java.util.prefs.Preferences)の使い方と同じで、ユーザーがカスタマイズしたフォント、色、位置などのパラメータ情報を簡単で透明な方法で保存します.一般的なアプリケーションでは、「設定」や「プリファレンス」というインタフェースが提供されています.これらの設定は最後にPreferencesで保存できますが、プログラマーはどのような形式で保存されているのか、どこに保存されているのかを知る必要はありません.もちろん、他のものを保存したいなら、制限はありません.ただ、性能的には何が問題なのか分かりません.
Androidシステムでは、これらの情報はXMLファイルとして/data/data/PCMAGE_に保存されています.NAME/shared_prefsディレクトリの下.
以下は小さなdemoです
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name"/>
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/age"/>
<EditText
android:id="@+id/age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="save"
android:text="@string/save"/>
</LinearLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ShardPerference</string>
<string name="menu_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="name"> </string>
<string name="age"> </string>
<string name="save"> </string>
</resources>
main.activity
package com.shardperference.example;
import java.io.IOException;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.shardperference.service.PreferencesService;
public class MainActivity extends Activity {
private EditText edit_name, edit_age;
private PreferencesService ps;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit_name = (EditText)findViewById(R.id.name);
edit_age = (EditText)findViewById(R.id.age);
ps = new PreferencesService(this);
initData();
}
private void initData(){
Map<String, String> data = ps.initData();
String name = data.get("name");
int age = Integer.parseInt(data.get("age"));
edit_name.setText(name);
edit_age.setText(age + "");
}
public void save(View view){
String name = edit_name.getText().toString();
int age = Integer.valueOf(edit_age.getText().toString());
try {
ps.save(name, age);
Toast.makeText(MainActivity.this, "save success", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(MainActivity.this, "save error", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
PreferencesService.class
package com.shardperference.service;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class PreferencesService {
private Context context;
public PreferencesService(Context context) {
this.context = context;
}
public void save(String name, int age) throws IOException{
SharedPreferences sp = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("name", name);
editor.putInt("age", age);
editor.commit();
}
public Map<String, String> initData(){
Map<String, String> data = new HashMap<String, String>();
SharedPreferences sp = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
data.put("name", sp.getString("name", ""));
data.put("age", String.valueOf(sp.getInt("age", -1)));
return data;
}
}