疯狂Android讲义 - 学习笔记(七)
第8章 Android数据存储与IO
Java IO的数据存储可以移植到Android应用开发上来,Android系统还提供了一些专门的IO API。
Android系统内置了SQLite数据库,SQLite是轻量级的,没有后台进程,整个数据库对应一个文件,这样可以非常方便的在不同设备之间移植。Android为访问SQLite提供了大量便捷的API。
8.1 使用SharedPreferences
适用于保存简单格式的数据。
8.1.1 SharedPreferences 与 Editor
SharedPrefernces保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是key-value对。
SharedPreferences接口主要负责读取程序的Preferences数据,没有提供写入数据的能力。
SharedPreferences调用edit()方法即可获取它所对应的Editor对象,由Editor对象提供写入功能,编辑完成后,需要调用commit()。
SharedPreferences是一个接口,需要调用Context提供的getSharedPreferences()方法来获取其实例。
8.1.2 SharedPreferences的存储位置和格式
(源码\08\8.1\SharedPreferencesTest)
8.1.3 读、写其他应用的SharedPreferences
前提是其他应用程序指定了相应的访问权限。
关键是获取其他应用程序的Context,Context代表了Android应用的全局信息的接口。
Android系统将应用程序的包名作为它的唯一标识。
8.2 File存储
Java提供的I/O流
8.2.1 openFileOutput 和 openFileInput (Context提供的方法)
8.2.2 读写SD卡上的文件
(源码\08\8.2\SDFileExplorer)
8.3 SQLite数据库
SQLite支持绝大部分SQL92语法,运行开发者使用SQL语句操作数据,但SQLite数据库只是一个文件。
8.3.1 SQLite简介
8.3.2 创建数据库和表
8.3.3 使用SQL语句操作SQLite
8.3.4 使用sqlite3工具
8.3.5 使用特定方法操作SQLite数据库,即使用Android的SQLiteDatabase提供的方法。
8.3.6 事务 SQLiteDatabase中控制事务的方法:beginTransaction(),endTransaction(), inTransaction()用于判断是否处于事务中。
8.3.7 SQLiteOpenHelper类 是Android提供的管理数据库的工具类。
实际项目中很少使用SQLiteDatabase的方法来打开数据,通常都会继承SQLiteOpenHelper开发子类,并通过该子类的
getReadableDatabase()、getWritableDatabase()方法打开数据库。
8.4 手势(Gesture)
8.4.1 手势检测 GestureDetector类,创建这个类时需要传入一个GestureDetector.OnGestureListener监听器实例,这个实例对需要的事件进行处理。
8.4.2 增加手势
8.4.3 识别用户的手势
8.5 自动朗读(TTS)
Android提供了自动朗读的支持
第9章 使用 ContentProvider实现数据共享
ContentProvider是不同应用程序之间进行数据交换的标准API。暴露自己的数据用ContentProvider,其它应用程序可通过ContentResolve来操作暴露出来的数据。
9.1 数据共享标准:ContentProvider简介
9.1.1 ContentProvider
9.1.2 Uri简介
9.1.3 使用ContentResolver操作数据
9.2 开发ContentProvider
9.2.1 ContentProvider与ContentResolver的关系
Uri是ContentProvider和ContentResolver进行数据交换的标识。
9.2.2 开发ContentProvider
9.2.3 配置ContentProvider
9.2.4 使用ContentResolver调用方法
9.2.5 创建ContentProvider的说明
9.3 操作系统的ContentProvider
Android系统本身提供了大量的ContentProvider
9.3.1 使用ContentProvider管理联系人
9.3.2 使用ContentProvider管理多媒体内容
9.4 监听ContentProvider的数据改变
9.4.1 ContentObserver简介 用于监听ContentProvider数据的改变。
疯狂Android讲义 - 学习笔记(七)的更多相关文章
- 疯狂Android讲义 - 学习笔记(八)
第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的 ...
- 疯狂Android讲义 - 学习笔记(六)
第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 ...
- 疯狂Android讲义 - 学习笔记(五)
第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点 ...
- 疯狂Android讲义 - 学习笔记(四)
Android应用通常有多个Activity,多个Activity组成Activity栈,当前活动的Activity位于栈顶.Activity相当于Java Web开发的Servlet.当Activi ...
- 疯狂Android讲义 - 学习笔记(三)
Android的事件处理 3.1 Android提供了两套事件处理机制:基于监听的事件处理.基于回调的事件处理. 3.2 基于监听的事件处理 3.2.1 监听的处理模型 主要涉及三类对象:Event ...
- 疯狂Android讲义 - 学习笔记(二)
Android应用的用户界面编程 2.1 界面编程与视图(View)组件 Android应用的绝大部分UI组件放在android.widget.android.view包及其子包中,所有UI组件都继承 ...
- 疯狂Android讲义 - 学习笔记(一)
常用开发工具的用法 android : 启动Android SDK管理器 android --help 查看具体用法 android create avd -n t10 -t 10 -b armea ...
- 【疯狂Java讲义学习笔记】【流程控制与数组】
[学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变 ...
- 【疯狂Java讲义学习笔记】【数据类型与运算符】
[学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有flo ...
随机推荐
- 类库间无项目引用时,在编译时拷贝DLL
例一: xcopy $(TargetPath) $(SolutionDir)\Framework\HCSP.App\bin\Debug /y 例二: xcopy $(TargetPath) $(Sol ...
- ThreaLocal内存泄露的问题
在最近一个项目中,在项目发布之后,发现系统中有内存泄漏问题.表象是堆内存随着系统的运行时间缓慢增长,一直没有办法通过gc来回收,最终于导致堆内存耗尽,内存溢出.开始是怀疑ThreadLocal的问题, ...
- C# 的 Dictionary 寫入前應注意事項
一個已上線.用戶龐大的系統,幾個月來第一次出現這個系統錯誤訊息 : 「已經加入含有相同索引鍵的項目」「已添加了具有相同键的项」An item with the same key has already ...
- TODO:小程序集成WeUI
TODO:小程序集成WeUI WeUI 为微信 Web 服务量身设计.WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一. ...
- 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...
- Discuz门户首页关键词和描述显示“首页”的解决方法
Discuz社区在后台设置好门户标题.关键字.描述,更新缓存,发现用户登录状态下,门户首页的关键字和描述正常显示:但在游客状态下不显示,在某工具中查看到的情况如下: 现找到两种解决办法:(记得修改前备 ...
- python统计某一个进程名所占用的内存
设计思路: 通过python,执行cmd中tasklist命令,获取要统计的进程的相关信息:通过正则表达式,查找出进程名称.进程pid.内存使用,然后打印出来. 作为pythoner,有时候需要统计p ...
- 深入学习jQuery动画控制
× 目录 [1]动画状态 [2]停止动画 [3]动画延迟[4]全局控制 前面的话 jQuery动画可以使用fade.hide.slide等方法实现基本动画效果,可以使用animate实现自定义动画,甚 ...
- IOS入门之Swift语言(一)
经过不断的努力,小哥也买了台苹果设备,终于可以开始我的IOS之旅了,说来确实令人苦恼,为了学习IOS我这着贫农阶级,省了几个月的零花钱,外加向亲朋好友求救,最终痛下心扉,卖了台MAC pro128G版 ...
- BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...