2013/1/31
一,数据的存储
数据的存储是很重要的,由于某些数据要在未来reuse。所以有必要将数据保存起来。
安卓里面有三种基本保存数据的办法:
(1)shared preferences机制,用来保存一小撮数据。
(2)传统的File System
(3)通过sqlite的支持用DB来存储数据
1.1,存储和载入用户的配置
一般来说,以上三种方法都可以用来存储用户配置,不过后两者明显有点大题小做了。我们可以简单的用SharedPreferences对象来存储一对对的name/value的值,这些值会自动的存到一个xml文件中去。
1.1.1 存储用户配置
首先我们要创建一个xml文件,里面是你想要存储的配置的类型等等等:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Category 1">
<CheckBoxPreference
android:title="CheckBox"
android:defaultValue="false"
android:summary="True Or False"
android:key="checkboxPref"
/>
</PreferenceCategory>
<PreferenceCategory android:title="Category 2">
<EditTextPreference
android:summary="ENter a text"
android:defaultValue="[enter a string here]"
android:title="Edit text"
android:key="editTextPref"
/>
<RingtonePreference
android:summary="select a ringtone"
android:title="RingTones"
android:key="ringtonepref"
/>
<PreferenceScreen
android:title="Second Prefercence Screen"
android:summary="Click here to go to second PreScreen"
android:key="Second Pref Sceen"
>
<EditTextPreference
android:summary="enter a string"
android:title="Edit text sp"
android:key="secondEditTextPref"
/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
通过上面的xml文件,可以看出:
(1)有两个preference categories来为配置分组
(2)两个checkbox--checkboxpref和secondEdittextpref
(3)一个选择ringtone的选项,ringtonepref
(4)另外一个preferenceScreen包含另外一个配置eidtTExt
注意上面每个控件都有一个key的属性,这个属性是用来保存或取出对应的配置信息的关键字。会自动的存储用户选择的配置。
为了让os去展示出配置的页面,我们新建了一个活动,继承于PreferenceActivity:
public class AppPreferenceActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//---load the preferences from an XML file---
addPreferencesFromResource(R.xml.myapppreferences);
}
}
Intent i = new Intent(“net.learn2develop.AppPreferenceActivity”);
startActivity(i);
注意也要在androidmainfest文件中加入这个活动的相关信息(之前的文章有讲)。这样就可以打开配置页面了。
OK,那么当你打开并且更改了一个配置之后,修改后的信息会自动保存在/data/data/net.learn2develop.UsingPreferences/shared_prefs里面
1.1.2取出用户的配置
--存储了之后读取用户的配置。
假设我们在主活动里面添加几个按钮来进入配置页面和保存读取存储的信息:
<Button
android:id="@+id/btnPreferences"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClickLoad"
android:text="Load Preferences Screen" />
<Button
android:id="@+id/btnDisplayValues"
android:text="Display Preferences Values"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClickDisplay"/>
<EditText
android:id="@+id/txtString"
android:layout_width="fill_parent"
android:layout_he