Android数据存储有几种方式:
1、SharedPreferences是使用键值对保存数据,适用于基本数据类型:int,float,long,String,boolean类型;
2、SQLite数据库存储,是一款小巧,开源的数据库。
3、网络数据保存。
4、文件
5、contentProvider
SharedPrefernces详细说明:
SharedPrefernces preference= Context.getSharedPreferences("文件名称", "控制权限");
控制权限:
Context.MODE_PRIVATE:表示该文件只能被自身应用调用,
MODE_WORLD_READABLE: 表示该文件可以被其他应用程序读取
MODE_WORLD_WRITEABLE:表示该文件可以被其他应用程序写入
读取文件:
preference.getString(key, value);//读取String类型
preference.getInt(key, value);//读取Int类型preference.getBoolean(key, value);//读取Boolean类型
preference.getFloat(key, value);//读取Float类型
preference.getLong(key, value);//读取Long类型
preference.getAll(key, value);//读取文件中所有值,返回Map<String ,?>
写入文件:
SharedPreferences.Editor editor = preferences.edit();//取得编辑
editor.putString(key, value);//提交数据editor.putLong(key, value);
editor.putInt(key, value);
editor.putFloat(key, value);
editor.putBoolean(key, value);
editor.remove(key);//删除某个值
editor.commit();//执行后,文件不存在则创建文件并保存,文件存在则将数据保存到文件中。
事件监听:
//注册事件
preference.registerOnSaredPreferenceChangeListener(newonSharedPreferenceChangeListener());
preference.commit();//不要忘记commit,否则不会触发监听器
//解锁注册,不会再响应改变
preference.registerOnSaredPreferenceChangeListener(newonSharedPreferenceChangeListener());
代码:
package com.learnsharedpreference;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
private OnSharedPreferenceChangeListener listener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
Log.e("ChangeListener", "key: " + key + " = " + sharedPreferences.getString(key, "value"));
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 如果mytest.xml文件不存在,则会在editor.commit()时创建并保存数据。如果mytest.xml存在,
// 则会在editor.commit()时保存数据。
SharedPreferences preference = this.getSharedPreferences("mytest", this.MODE_PRIVATE);
SharedPreferences.Editor editor = preference.edit();
editor.putBoolean("boolean", true);
editor.putString("string", "value");
editor.putFloat("float", 0.0f);
editor.putInt("int", 10);
editor.putLong("long", 25648523);
editor.commit(); //不能忘记,否则不会创建文件和保存数据
Log.e("ReadSharedRefernces", "string:" + preference.getString("string", ""));
Log.e("ReadSharedRefernces", "int:" + preference.getInt("int", 1));
Log.e("ReadSharedRefernces", "boolean:" + preference.getBoolean("boolean", false));
Log.e("ReadSharedRefernces", "flaot:" + preference.getFloat("float", 0.1f));
Log.e("ReadSharedRefernces", "long:" + preference.getLong("long", 23));
preference.registerOnSharedPreferenceChangeListener(listener); //注册事件
editor = preference.edit();
editor.putString("testListener", "success");
editor.commit();//不要忘记commit(),否则不会触发监听器。
preference.unregisterOnSharedPreferenceChangeListener(listener); //解除注册,不会再相应改变
editor = preference.edit();
editor.putString("name", "SharedPreference");
editor.commit();//已经解锁注册,所以更改数据时不会触发监听器
}
}