当前位置: 代码迷 >> Android >> Android学习笔记之九数据存储
  详细解决方案

Android学习笔记之九数据存储

热度:18   发布时间:2016-04-28 07:21:47.0
Android学习笔记之9数据存储

数据存储

典型的桌面OS的文件系统是公共文件系统——任何软件可以使用它来存储和读取文件,改文件也可以被其他应用程序所读取。

Android提供了不同的文件系统,所有应用程序数据为该应用程序私有。当然也可以通过统一的借口提供给其他应用程序访问。

?

10.1SharedPreferences

用于存储简单的配置信息,如欢迎语、用户名及密码,以键值对方式存储。

初始化对象:

SharedPreferences setting= getSharedPreferences(“SEETING_INFO”,0);

接受前端输入并保存:

Setting.edit().putString(“name”,X.getText().toString());

获取保存的值

Setting.getString(“name”,””);

?

界面生成时一般执行onCreate(),退出时一般执行onStop();

?

SharedPreferences一般以XML形式保存。SEETING_INFO.xml

?

10.2类似Java I/O形式的接口:openFileInputOpenFileOutput

示例:

FileOutputStream fos = openFileOutput(“文件名”,Context.MODE_PRIVATE—写入模式);

FileInputStream? fis = openFileInput(“文件名”,);

FileOutputStream创建的文件其他应用程序无法读取。如需共享,则需要使用ContentProvider

?

如果应用程序需要额外的资源文件,可将其放在res/raw目录下,使用getResources获取资源。

Resource res = getResources();

InputStream is = res.openRawResource(R.raw.fileId);

10.3SQlite

Android使用SQLite作为数据库。支持SQL语句,轻量级嵌入式数据库。

一个SQLiteDatabase示例代表一个SQLite数据表,数据库在Android中的私有的,名字也是唯一的。

?

SQLiteOpenHelper用于生成数据库,并对数据库版本管理。调用getWritableDatabase()getReadableDatabase()时,如无数据库,则生成一个。

是抽象类,需要继承并实现3个方法:onCreate()

onCreate():数据库第一次生成时使用,在该方法中生成数据库表。

onUpdate():数据库升级时,系统主动调用该方法。一般在该方法中删旧表,建新表。

OnOpen():打开数据库时的回调函数,一般不会用到。

?

Android日志打印级别:VerboseDebugInfoWarningError

?

Cursor是随机读写数据库查询结果的借口

ContentValues以键值对存储数据,键位Sring类型,值为基础类型。

?

SimpleCursorAdapter负责将Cursor中的数据放到ListView中。同理ArrayAdapter

10.4ContentProvider

一个应用程序可以通过ContentProvider的接口将自己的数据暴露出去,外界通过其他接口读写数据。

常用的接口是query(),insert(),update(),delete()

?

外界通过ContentResolver访问ContentProvider中的数据。在Android中,通过getContentResolver()获取现有应用中的ContentResolver实例。

?

ContentResolverContentProvider通过URL读写数据。URL可以是指定全部数据,可以是某个ID的数据。

URL由三部分组成:

Content://+要获取数据的字符串片段+ID

?

startManagingCursor(Corsor):系统管理生成的Corsor

?

ListView中的id 必须声明为@+id/Android:才能被ListView引用。

?

Android数据库中,每个表都有一个_id字段。

?

10.5网路存储

WebService

若需访问外部网络,需要在AndroidManinfest.xml中加入代码申请许可权限:

<use-permission Android:name=”Android.permission.INTERNET”

HttpPost访问:request=new HttpPost(url网址)

Request.setEntry();

Try{

??? HttpResponse response=new DefaultHttpClient().execute(request);

If(response.getStatueLine().getStatueCode()!=404)

?? String result=EntityUtil.toString(response.getEntity());

}catch(Exception e){

?

}

  相关解决方案