码迷,mamicode.com
首页 > 移动开发 > 详细

Android_持久化技术

时间:2016-08-09 22:05:03      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:

持久化技术 ----SharedPreferences 

第一次学SharedPreferences的时候脑袋转不过弯,后来自己研究明白了,印象特别深,希望写的这个能有帮助,少走弯路.

1概念 :将某些数据进行存储,可以实现在某些时机取出想要的数据. 较好的apps都需要保存用户的设置信息, 例如默认的字体/字号等信息,缓存的一 些网络数据,将图片缓存到文件等等.

2实现方式:1.文件(I/O流),例如保存网络图片 2.SQLite数据库,例如保存网络数据 3.SharedPreferences,例如app的配置信息 4.ContentProvider 5.网络.

3存储方式:文件存储,SharedPreferences存储和数据库存储

4SharedPreferences :是以键值对的形式进行存储 步骤:

     a首先获取SharedPreferences 对象          SharedPreferences简写 =sp

(getSharedPreferences中有两个参数,参数1 sp的名字, 参数2 访问权限//getPreferences只有一个参数,参数为访问权限,这种方法默认当前Activity);

     b向SharedPreferences 中存储数据    例: SharedPreferences.Editor  editor = shared.edit();

       (通过editor的commit或者apply方法,才能生效)

      c从SharedPreferences 中获取数据  通过get方法从sp文件中取出对象类型的值  

       参数1key; 参数2value; 

特别注意:当通过key无法取出对应的数据时,结果为默认值(默认值就是get时对应的value);

例如: 存储数据时: editor.putString("name", "贾海然");

        获取数据时: String name = shared.getString("name", "傻子"); --- 因为获取之前 存储了name 这个key,存储name对应的value是贾海然, 所以 获取的数据是 ("name", "贾海然")而不是("name", "傻子")

例子2:存储数据时: editor.putString("name", "贾海然");

        获取数据时: String name = shared.getString("nam", "傻子"); -- 获取数据时,因为错误的书写key,而且之前并没有nam这个key,肯定是无法取到对应的value .所以获取的结果就是("nam", "傻子");

特别注意:当通过key无法取出对应的数据时,结果为默认值(默认值就是get时对应的value);

什么是默认值:获取数据时: String name = shared.getString("nam", "傻子"); --这里的傻子就是默认值

 

------------------------------------------------------------------------------------------------------------------------------------------------

 

   MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private TextView textView;
private Button save, get;
private String name;
private SharedPreferences shared;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//使用sharedPreferences 步骤

textView = (TextView) findViewById(R.id.rv_show);
save = (Button) findViewById(R.id.btn_save);
get = (Button) findViewById(R.id.btn_get);
save.setOnClickListener(this);
get.setOnClickListener(this);
//1获取sharedpreferences对象
//参数1 sp的名字. 参数2 sp访问权限.
//需要注意文件名的命名规范
name = "com.example.SETTING";
//参数2的权限填入私有,意义;该文件只能本app访问
shared = getSharedPreferences(name, MODE_PRIVATE);
/**第二种获取对象的方法, 默认当前activity
* shared = getPreferences(MODE_PRIVATE);
*/

}

@Override
public void onClick(View view) {
switch (view.getId()) {

case R.id.btn_save:
saveData();
break;

case R.id.btn_get:
getData();
break;

}

}

private void saveData() {
//向SharedPreferences存储数据
//2.通过Editor对象对SP文件进行编辑
SharedPreferences.Editor editor = shared.edit();
//sp 文件是以键值对(key,value)的形式保存数据
editor.putString("name", "长久青");
editor.putString("like", "充气娃娃");
editor.putInt("time", 1);
//3.需要调用Editor的commit方法能生效,或者apply发放,提交修改,才能生效
editor.apply();


}


public void getData() {
//从sp中取出文件
//通过get方法,从sp文件中取出对象类型的值
//参数1 key 参数2 默认值.当通过key无法取出对应的数据时,结果为默认值
String name = shared.getString("name" , "陶长骏");
String like = shared.getString("like" , "胡庆凯");
int time = shared.getInt("time" , 100);

textView.setText(name + "喜欢" + like + "完了" + time + "次");

}
}
-----------------------------------------------------------------------------------------------------------------
activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dllo.a12_sp.MainActivity">

<TextView
android:id="@+id/rv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello MOTO!" />


<Button
android:text="存数据"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_save"/>


<Button
android:text="取数据"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_get"/>
</LinearLayout>

Android_持久化技术

标签:

原文地址:http://www.cnblogs.com/jiahairan/p/5754531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!