设为首页 收藏本站
查看: 1726|回复: 0

[经验分享] 为有源头话水来——使用SQLite、ContentProvider与Preferences处【3】

[复制链接]

尚未签到

发表于 2016-12-2 06:00:23 | 显示全部楼层 |阅读模式
9.4 使用Preferences 存储应用程序数据
  Preferences是一种轻量级的数据存储机制,它将一些简单数据类型的数据,包括boolean类型、int类型、float类型、long类型以及String类型的数据,以键值对的形式存储在应用程序的私有1
Preferences目录(/data/data/<包名>/shared_prefs/)中。这种Preferences机制广泛应用于存储
应用程序中的配置信息。
在Android平台上,只需要用一个Context的对象调用getSharedPreferences(String name,
int mode)方法传入Preferences文件名和打开模式,就可以获得一个SharedPreferences的对象。
若该Preferences文件不存在,在提交数据后会创建该Preferences文件。利用SharedPreferences
对象可以调用一些getter方法,传入相应的键来读取数据。要对Preferences文件的数据进行修改,
首先利用SharedPreferences对象调用edit()方法获得一个内部类Editor的对象,然后用这个
Editor对象就可以对Preferences文件进行编辑了。注意,编译完毕后一定要调用commit()方法,
这样才会把所做的修改提交到Preferences文件当中去。下面是一个利用Preferences机制来保存
EditText中所输入的字符串的示例。
首先构造一个简单的用户界面,只显示一个EditText控件。
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <EditText
8 android:id="@+id/edittext"
9 android:layout_width="fill_parent"
10 android:layout_height="wrap_content" />
11 </LinearLayout>
然后在代码中实现程序的功能。在onCreate()方法的实现中,将EditText的内容设置为上
一次退出时保存在Preferences文件中的字符串。而在onDestroy()方法中,则实现了将当前
EditText中的字符串存储到Preferences文件。下面是详细的实现代码。
package com.studio.android.chp9.ex6;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class Preferences extends Activity {
EditText edit;
SharedPreferences sp;
  final static String PREF = "MY_PREF";
final static String EDIT_KEY = "EDIT_CONTENT";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit = (EditText)findViewById(R.id.edittext);
sp = getSharedPreferences(PRE,0);
String initial = sp.getString(EDIT_KEY, null);
if (initial != null) {
edit.setText(initial);
}
}
@Override
public void onDestroy() {
SharedPreferences.Editor editor = sp.edit();
editor.putString(EDIT_KEY,String.valueOf(edit.getText()));
editor.commit();
super.onDestroy();
}
}
最后,此应用程序在每次启动时会将上次退出时EditText中的内容恢复,如图9-9所示。

  这时我们可以通过adb shell进入该程序的私有数据目录,查看Preferences文件的具体的存
储形式,如图9-10所示。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308251-1-1.html 上篇帖子: 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布 下篇帖子: 如何用androd自带的slite3操作sqlite数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表