android 摘要----数据存储全方案,详解持久化技术

本文介绍了Android中的数据持久化技术,包括文件存储、SharedPreferences存储和SQLite数据库存储。文件存储适合简单文本或二进制数据;SharedPreferences通过键值对存储数据;SQLite提供更复杂的数据库操作,支持事务处理和数据库升级。
摘要由CSDN通过智能技术生成
数据持久化:
        只将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据也不会丢失。


1,文件存储:
            是android中最基本的一种数据存储方式,不对存储内容进行任何格式化处理,所有诗句原封不动的保存到文件当中,适合存储一些简单的文本数据或二进制数据。


            下面是一段代码,展示如何将一段文本内容保存到文件中:
                            public void save(){
                                    String data = "Data to save";
                                    FileOutputStream out = null;
                                    BufferedWriter writer = null;
                                    try{
                                            out = openFileOutput("data",Context.MODE_PRIVATE);
                                            writer = new BufferedWriter(new OutputStreamWriter(out));
                                            writer.write(data);
                                    }catch(IOException e){
                                            e.printStackTrace():
                                     }finally{
                                            try{
                                                    if(writer != null){
                                                               writer.close();
                                                    }
                                                }catch(IOException e){
                                                        e.printStackTrace();
                                                }
                                        }
                                 }


从文件中读取数据,代码如下:
public String load(){
    FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
    try {
        in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
        while((line = reader.readLine()) != null){
            content.append(line);
}
    } catch (FileNotFoundException e) {
        e.printStackTrace();
} catch (IOException e) {
        e.printStackTrace();
} finally {
if(reader != null){
try {
                reader.close();
} catch (IOException e) {
                e.printStackTrace();
}
        }
    }
return content.toString();
}




2, SharedPreferences 存储


 存储方式:
            通过键值对的方式进行存储数据。


(1)得到SharedPreferences对象的方法:
                1):Context 类中的getSharedPreferences()方法:
                                此方法接受两个参数,第一个参数用于指定SharedPrerences 文件的名称,如果指定的文件不存在则会创建一个。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE和MODE_MULTI_PROCESS。前者是默认操作模式,和直接传入0效果一样,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。后者一般是用于会有多个进程中对同一个SharedPreferences文件进行读写的情况。


                2):Activity类中的getPreferences()方法
                        


                3):PreferenceManager类中的getDefaultSharedPreference()方法
                                    这是一个静态方法,接受一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件




   得到SharedPreferences对象后,就可以开始存储数据,主要步骤如下:
            1,调用SharedPreferences 对象的edit()方法来获取一个SharedPreference.Editor对象。
            2,向 SharedPreferences.Editor 对象中添加数据,putBoolean()、putString()方法等,以此类推。
            3,调用commit()方法将添加的数据提交,从而完成数据存储操作。
public void onClick(View view) {
    SharedPreferences.Editor editor =
            getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.commit();
}
读取数据:
public void onClick(View view) {
    SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");
    int age = pref.getInt("age",0);
    boolean married = pref.getBoolean("married",false);
Log.d("MainActivity","name is "+ name);
Log.d("MainActivity","age is " + age);
Log.d("MainActivity","married is " + married);
}




3,创建数据库
        SQLiteOpenHelper 类,借助这个类可以对数据库进行创建和升级。
        SQLiteOpenHelper 是抽象类,要创建自己的帮助类去继承它。
        SQLiteOpenHelper两个重要的实例方法:getReadableDatabase()和getWritableDatabase().这两个方法都可以创建或者打开一个现有的数据库,并返回一个可对数据库进行读写操作的对象。


 4,升级数据库
        调用SQLiteOpenHelper内的onUpgrade()方法实现升级




5,使用事务


        事务:
                就是把许多事情当成一件事来处理。可以理解为同一条绳上的蚂蚱。
        
        有点:
                。在android应用开发中,经常会遇到需要进行数据库操作的时候,Android中进行数据库操作是非常慢的(尤其是写操作),打包成事务能够有效地提高效率。
                。保证数据的一致性,有关事务的操作全部完成后才提交(生效),否则就进行事务的回滚操作。


        SQLiteDatabase db = dbHelper.getWritableDatabase();
        
        db.beginTransaction()   //开启事务
        
        db.endTransaction()     //结束事务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值