转载请注明出处:http://blog.csdn.net/joker_ya/article/details/41546399
最近工作的事情暂时有着落了,所以最近也不怎么焦急了。
在安卓中提供了5种存储方式,分别是:文件存储、SQLite数据库方式、内容提供者(Content provider)、SharedPreferences和网络存储5种存储方式。今天給大家讲解一下最简单的存储方式--SharedPreferences存储方式。
SharedPreferences是Android提供用来存储一些简单的配置信息的一种机制,它以键值对的方式存储,这样开发人员就可以很方便地实现读取和存入。SharedPreferences经常用于存储常见的欢迎语、登录用户名和密码等信息。SharedPreferences是Android平台上一个轻量级的存储类,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,类似于Windows系统上的ini配置文件,但是它分多种权限,可以全局共享访问,最终是以XML方式来保存,但是整体效率不是特别高。XML处理时Dalvik会通过自带底层的本地XMLParser解析,如XMLpull方式,这样对于内存资源占用比较好。
两个Activity之间的数据传递除了可以通过Intent来传递外,还可以使用SharedPreferences来共享数据的方式实现。SharedPreferences的用法很简单,例如,在MainActivity中编写如下代码:
<span style="font-size:18px;">package com.example.sharedpreferencesdemo;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
/**
* SharedPreferences存储方式的使用
*
* @author Joker_Ya
*/
public class MainActivity extends ActionBarActivity {
// 存储文件的名称
private final static String SHARE_NAME = "data";
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
// 得到SharedPreferences
preferences = getSharedPreferences(SHARE_NAME, 0);
// 获取SharedPreferences.Editor,用于存入键值对
editor = preferences.edit();
// editor相当于MAP集合,使用put来设置键和值
editor.putString("item", "myData");
// 提交完成
editor.commit();
Toast.makeText(this, "已成功用SharedPreferences将数据存入", 3000).show();
// 设置按钮的点击事件
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,
OtherActivity.class);
startActivity(intent);
}
});
}
}
</span>
代码中用getSharedPreferences得到SharedPreferences的对象preferences,然后用preferences得到编辑器editor。在editor中put入键值对。这里我输入的是key=item,value=myData,然后commit提交。 这里提一下:在我们设置文件名的时候,设置名字就好了。不用设置文件的后缀名,系统在生成该文件的时候会自动帮我们加上.xml的后缀名。 最后点击按钮在另一个Activity中获取存入的数据并显示出来。另一个Activity的代码如下:
<span style="font-size:18px;">package com.example.sharedpreferencesdemo;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
/**
*
* @author Joker_Ya
*
*/
public class OtherActivity extends ActionBarActivity {
private TextView textView;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other_layout);
textView = (TextView) findViewById(R.id.textview);
// 得到SharedPreferences,后面的两个参数中,第一个参数为文件名,第二个为权限
sp = getSharedPreferences("data", 0);
// 获取数据
String data = sp.getString("item", null);
textView.setText(data);
}
}
</span>
代码比较简单就不多说了。让我们运行一下来看看效果吧!
另外,保存文件的存放路径为:data/data/你的包名/share_prefs/目录下。如刚刚创建的项目的文件路径为:data/data/com.example.sharedpreferencesdemo/share_prefs/data.xml。如下图所示:
我们把data.xml文件提取到桌面打开如下图所示:
说明确实是把数据存入到名为data.xml的文件中。
好了,今天就这样了。
最后,附上源码下载地址: