【 Android官方文档读书笔记】保存数据

Android提供了3种数据保存方式:SharePreference、文件与数据库。

1,SharePreference

如果想保存一个相对较小的key-values集合,可以使用 SharedPreferences
API. SharedPreferences对象指向包含key-value对的文件,并且提供简单的读写方式。每个SharedPreferences文件均由框架管理,私人或共享均可使用。其本质是一个xml文件。

数据读入:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

long highScore = sharedPref.getInt(key,
defaultValue);

数据写入:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

SharedPreferences.Editor editor = sharedPref.edit();

editor.putInt(getString(R.string.saved_high_score), newHighScore);

editor.commit();

2,文件

File 对象适用于在start-to-finish读取或写入大量数据,File对象适合于读取或者写入大量数据,但是缺点是更新数据比较困难。Android文件存储分为内部存储和外部存储。内部存储特点:始终可用;保存的文件只能用于默认应用程序;当用户卸载应用程序时,系统会从内部存储删除应用程序所有文件。因此,当要确保无论用户还是其他应用程序均可访问文件时,内部存储无疑是最好的选择。外部存储的特点:并不总是可用的;具有全局可读性,所以保存的文件可能被控制范围外的人读取;用户想要卸载应用程序,只有当
应用程序文件保存在getExternalFilesDir()目录时系统才会删除应用程序文件。因此,对于不需要访问限制的文件以及要同其他应用程序共享或者允许用户使用计算机访问的文件,外部存储无疑是最好的途径。

在内部存储保存文件时,你可以调用两种方法之一来获取相应的目录文件:

getFilesDir() 返回表示应用程序内部目录的文件

getCacheDir() 返回表示应用程序临时缓存文件的内部目录的文件。

外部存储的权限:

<manifest ...>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

...

</manifest>

3,数据库

Android使用SQLite来支持数据库操作,SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。一般重复或结构化数据使用数据库来保存。

数据读取示例:

Cursor
c = db.query(

FeedEntry.TABLE_NAME,  // The table to query

projection,                               // The columns to return

selection,                                // The columns for the WHERE clause

selectionArgs,                            // The values for the WHERE clause

null,                                     // don‘t group the rows

null,                                     // don‘t filter by row groups

sortOrder                                 // The sort order

);

更新数据写库示例:

SQLiteDatabase
db = mDbHelper.getReadableDatabase();

ContentValues values = new ContentValues();// New value for one column

values.put(FeedEntry.COLUMN_NAME_TITLE, title);// Which row to update, based on the ID

String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";

String[] selectionArgs = { String.valueOf(rowId) };

int count = db.update(FeedReaderDbHelper.FeedEntry.TABLE_NAME, values, selection, selectionArgs);

时间: 2024-11-03 01:28:50

【 Android官方文档读书笔记】保存数据的相关文章

【 Android官方文档读书笔记】连接网络

网络连接时应用的最基本的功能之一,Android系统对网络连接进行了封装,使得开发者能够更快的给应用增加网络功能.大多数网络连接的Android应用使用HTTP发送和接受数据,Android包括两个HTTP客户端:HttpURLConnection和Apache HttpClient.开发者可以使用这两个客户端中的任意一个去完成网络连接. 1, 网络连接的基本步骤: (1)增加权限:manifest文件中必须包含以下权限 <uses-permission android:name="and

【 Android官方文档读书笔记】硬件加速

为了让应用在Android系统运行起来更加流畅,从3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.所谓硬件加速就是使用GPU进行View上的绘制操作,从而是渲染速度更快,应用体验更加流畅. 1,启动硬件加速的方法 启用硬件加速的最简单方法就是为整个系统打开硬件加速的全局设置,然而硬件加速并不支持所有2D画的操作,所以开启硬件加速可能会对使用自定义组件的应用程序造成影响,问题常常表现在不可见的元素异常和错误的像素渲染.为了解决这个问题Android可以选择启动或者禁用以下

django官方文档读书笔记

写在前面:这算是第二次读英文原文文档,第一次是读scrapy,感觉还是要做笔记,好记性不如烂笔头,现在已经忘了scrapy文档讲了什么了,心疼.以后要多读多写 经过半年的基础学习(懒,拖延)终于来到web开发这一步,当时买了董大的web实战,准备是用flask来实现的,但是后面在逼乎上找到某培训班的django视频资源,所以最终还是决定用django. 看过各种对django的评价之后,个人总结django是一个已经高度框架化的框架了(笑),他的每一部分M,V,T都已经帮用户分好了,用户可自主选

【Android官方文档】翻译Android官方文档-Activities(一)

Activity是可以给用户提供交互操作的程序组件,例如打电话,拍照,发送邮件,抑或者是显示地图.通常窗口会填满屏幕,但是也可以做到比屏幕小或者是悬浮在窗口顶部. App通常由多个Activities组成,它们之间支持相互跳转.一般情况下,每个Activity在应用中都是特别的,就好像 主Activity一样,主activity是应用第一个Activity,其他Activity可以通过其他操作启动.一个新的Activity的启动,那么旧Activity就会被停止,但是系统会保存这些activit

Android官方文档之App Components(Activities)

Activity是Android四大组件之首,本文将介绍Activity的含义.创建.启动.销毁.生命周期 等. 如需访问官方原文,您可以点击这个链接:<Activities> Activities Activity是一个类,它是Android呈现界面的载体,用于与用户操作交互,如拨号.照相.发送邮件.展示地图 等.每个Activity都承载了一个Window,这个Window用来绘制UI(User Interface).一般情况下,该Window铺满(fill)整个屏幕:有时候,它也可以悬浮

Android官方文档之Content Providers

Content Providers是Android中四大组件之一,用于管理应用程序访问结构化的数据.Content Providers可以压缩数据(They encapsulate the data),并保护访问数据的安全.Content Providers是应用程序访问跨进程数据的标准接口(standard interface that connects data in one process with code running in another process). 本文将介绍Conten

Android官方文档之App Components(Common Intents)

Intent的真正强大之处在于它的隐式Intent,隐式Intent需要配合Intent-filters使用,有关这方面的概念和知识,您可以参考我翻译的官方文档:<Android官方文档之App Components(Intents and Intent Filters)>. 隐式Intent足够强大,以至于系统提供了大量的Intent方便开发者启动系统应用程序,本文将介绍一些常用的隐式Intent.以及如何自定义intent-filters以匹配隐式intent. 如需阅读官方原文,您可以点

Android官方文档之Creating a Content Provider

写在前面的话:说两点.1.很荣幸自己的两篇文章< Android官方文档之App Components(Intents and Intent Filters)>.<Android官方文档之App Components(Common Intents)>被郭霖老师转载了,一方面说明我的博客内容得到了认可,另一方面也鞭策我继续写出质量更高的博文:2.最近在翻译官方文档,今天翻墙一看,发现页面改版了,而且居然默认显示了中文的文档(其实改版以前也有官方的中文文档,只是默认显示英文而已,另外中

Android官方文档之Bound Services

绑定式Service在CS结构中扮演着Server的角色.绑定式Service允许其他组件(如Activity)绑定该Service.发送请求.接收响应.甚至IPC通信( interprocess communication).绑定式Service通常服务于其他应用程序的组件.且没有明确的后台的概念(does not run in the background indefinitely). 本文将介绍bound Service的相关内容,包括其创建.与其他应用组件如何绑定 等.有关Service