SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?
SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
注意:sharedPreference在同一个activity里边没有使用的价值。需要在不同的activity间数据传递时候使用。也就是说你在A里边设置编辑保存了一个数据,这个数据其实已经被android系统存储在data/下边的一个xml文件中。你在B里边可以对该文件进行读取操作。然后对数据做相关的处理。刚才我傻乎乎的在一个activity里边进行操作,自我鄙视一把。
在之前写的系统基础上,引入sharedpreferences.这样相当于在程序中设置了一个数据库。这个数据库是键值对形式的保存在程序的data/文件夹目录下。在整个程序内部都可以使用宝宝尊在该数据库中的信息。例如;我在第三个页面中对数据进行编辑,然后commit()操作。然后在第四个页面,自动获取存储了的数据。然后显示在页面上。核心代码如下:
package com.example;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Third extends Activity {
private Button mButton;
private TextView mTextView;
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
mButton = (Button)findViewById(R.id.thirdButton);
mEditText = (EditText)findViewById(R.id.thirdEditText);
// SharedPreferences settings = getPreferences(MODE_PRIVATE);
// SharedPreferences.Editor editor = settings.edit();
// editor.putInt("age", 200);
// editor.putString("manong", mEditText.getText().toString());
// editor.commit();
//
// SharedPreferences datas = getPreferences(MODE_PRIVATE);
// String data = datas.getString("manong", "0");
// mTextView.setText(data);
//
SharedPreferences third = getSharedPreferences("manong", 0);
SharedPreferences.Editor editor = third.edit();
editor.putString("xiaojiang","PHP高级研究");
editor.commit();
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Third.this,Forth.class);
startActivity(intent);
}
});
}
}
package com.example;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
public class Forth extends Activity{
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.forth);
mTextView = (TextView)findViewById(R.id.TextView);
SharedPreferences forthdata = getSharedPreferences("manong", 0);
String dataString = forthdata.getString("xiaojian","NULL");
mTextView.setText(dataString);
}
}
运行截图如下: