android提供的5种存储方式

本文介绍了Android提供的五种数据存储方式:1) SharedPreferences,用于存储简单配置信息;2) 文件存储,通过openFileInput/output实现,支持SQLite数据库操作;3) SQLite,轻量级嵌入式数据库,支持SQL操作;4) ContentProvider,作为数据交换的桥梁,通过ContentResolver访问;5) 网络存储,涉及HTTP协议和网络数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、最简单的存储SharedPreferences

      SharedPreferences是Android提供用来存储一些简单的配置信息的一种机制,它以键值对的方式存储,经常用于存储常见的欢迎语、登录用户名和密码等信息。

      SharedPreferences提供了Android平台常规的Long长整型、Int整型、String字符串型的保存。两个Activity之间的数据传递除了可以通过Intent来传递外,还可以使用SharedPreferences来共享数据的方式实现。

      在Activity1中编写如下代码:

       Editor sharedata = getSharedPreferences("data",0).edit();

        sharedata.putString("item","getSharedPreferences");

        sharedata.commit();

      在Activity2中编写如下代码:

       SharedPreference sharedata = getSharedPreferences("data",0);

        String data = sharedata.getString("item",null);

        Log.v("cola","data="+data);

      最后通过以下Java代码将数据显示出来:

       <SPAN class = hilitel>SharedPreferences</SPAN>sharedata = getSharedPreferences("data",0);

        String data = sharedata.getString("item",null);

        Log.v("cola","data="+data);

二、文件存储

      和传统的Java中实现I/O的程序类似,在Android中,提供了openFileInput和openFileOuput方法来读取设备上的文件:

        String FILE_NAME = "tempfile.tmp";                           // 确定要进行文件操作的文件名

        // 初始化

        FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);

        FileInputStream fIs = openFileOutput(FILE_NAME);    // 创建写入流代码解释 

      通过上述代码只支持读取该应用目录下的文件,而读取非其自身目录下的文件时将会抛出异常。如果调用FileOutputStream时指定的文件不存在,则Android会自动创建,并且在默认情况下,写入时会覆盖原文件的内容,如果想要把新写入的内容附加到原文件内容后面,可以指定其模式为Context.MODE_APPEND。在默认情况下,使用openFileOuput方法创建的文件只能被其调用的应用使用,而其他应用无法读取这个文件。如果需要在不同的应用中共享数据,可以使用Content Provide实现。

    如果应用需要一些额外的资源文件,例如,一些用来测试用户写的音乐播放器是否可以正常工作的MP3文件,可以将这些文件放在应用程序的/res/raw/下,如mydatafile.mp3,那么就可以在应用中使用getResources获取资源后,以openRawResource方法(不带后缀的资源文件名)打开这个文件,实现代码如下所示:

        Resources myResources = getResources();

        InputStream myFile = myResources.openRawResource(R.raw.myfilename);

三、最常用的SQLite

      SQLite是一个轻量级的嵌入式数据库,是Andriod所带的一个标准的数据库,只有五种数据类型,分别是:NULL(空值)、INTEGER(整数)、REAL(浮点数)、TEXT(字符串)、BLOB(二进制数据其支持统一的SQL语句,可以利用SQL语句对数据进行增、删、改、查。

      使用DatabaseHelper类继承SQliteOpenHelper类,并重写onCreate和onUpgrade方法。在onCreate()方法中首先构造一条SQL语句,然后调用db.execSQL(sql)执行SQL语句。SQliteOpenHelper是一个辅助类,此类主要用于生成一个数据库,并对数据库的版本进行管理。当调用这个类的方法getWritableDatabase()或getReadableDatabasw()方法时,如果当时没有数据,那么Android系统就会自动生成一个数据库。    

四、ContentProvider存储

      Android中的两个程序之间进行数据交换就是通过ContentProvider实现的。ContentProvider类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。在程序内可以通过实现Content Provider的抽象接口将自己的数据显示出来。外界可以通过这套标准、统一的接口和程序中的数据实现交互,既可以读取程序中的数据,也可以删除程序中的数据。

      比较常见的接口是ContentResolver,外部程序可以通过ContentResolver接口访问ContentProvider提供的数据。在Activity中可以通过getContentResolver()得到当前应用的ContentResolver实例。ContentResolver提供的接口需要和ContentProvider中需要实现的接口相对应,常用的接口主要有以下几个:

        query(Uri uri, String[] projection, String selection, String[] selectionArgs,StringsortOrder):通过Uri进行查询,返回一个Cursor;

        insert(Uri url, ContentValues values):将一组数据插入到Uri指定的地方

        updata(Uri uri, ContentValues values, String where, String[] selectionArgs):更新Uri指定位置的数据

        delete(Uri url, String where, String[] selectionArgs):删除指定Uri且符合一定条件的数据。

五、网络存储

      网络存储即通过网络来实现数据的存储和获取,可以调用WebService返回的数据或是解析HTTP协议实现网络数据交互。具体需要熟悉java.net.*,Android.net.*这两个包的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值