04_数据存储
来源:互联网 发布:php-ml 中文分词算法 编辑:程序博客网 时间:2024/05/28 04:54
1. Android中的数据存储方式:
1). SharedPreferences存储
1). SharedPreferences存储
2). 手机内部file存储
3). 手机外部file存储
4). Sqlite数据库存储
5). 远程服务器存储
2. SharedPrefrence存储
1). 存储的位置
/data/data/packageName/share_prefs/xxx.xml
2). 特点
私有的以key--value的形式保存的小数据
应用卸载时会自动删除
3). 相关API
a. SharedPreferences
context. getSharedPreferences (String name, int mode): 得到SP对象
name: 文件名(不带.xml)mode: 生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit() : 得到Editor对象Xxx sp.getXxx(name,defaultValue): 根据name得到对应的数据
b. Editor
Editor put(name, value) : 保存一个键值对, 没有真正保存到文件中Editor remove(name)commit(): 提交, 数据真正保存到文件中了
3. 手机内部文件存储
1). 存储的位置
/data/data/packageName/files/xxx.xxx
2). 特点
私有的文件(图片, 数据库文件, 其它)
应用卸载时会自动删除
3). 相关API
a. Context
读取文件
FileInputStream fis = openFileInput("logo.png");保存文件FileOutputStream fos = openFileOutput("logo.png", MODE_PRIVATE)得到files文件夹对象File filesDir = getFilesDir();得到能操作assets下的文件的管理器AssetManager manager = getAssets();
b. AssetManager
得到文件输出流: InputStream open(String fileName)
c. BitmapFactory
加载图片得到图片对象: Bitmap BitmapFactory.decodeFile(String pathName)
4. 手机外部文件存储
1). 存储的位置
a. /storage/sdcard/Android/data/packageName/files/
b. /storage/sdcard/xxx/
2). 特点
a. 私有的文件(图片, 数据库文件, 其它), 应用卸载时会自动删除
b. 其它应用可以直接访问, 应用卸载时不会删除
3). 如何选择
主要看应用卸载后, 文件是否还有存在的必要
4). 相关API
Environment : 操作SD卡的工具类
得到SD卡的状态:Environment.getExternalStorageState()得到SD卡的路径:Environment.getExternalStorageDirectory()SD卡可读写的挂载状态值:Environment.MEDIA_MOUNTED
context.getExternalFilesDir(): 得到/mnt/sdcard/Android/data/pageckage_name/files/操作SD卡的权限:android.permission.WRITE_EXTERNAL_STORAGE
5. Sqlite数据库存储
1). 存储的位置
/data/data/packageName/databases/xxx.db
2). 特点
有一定关系结构的数据
应用卸载自动删除
3). Sqlite的特点:
a. 小: 几百K
b. 快: 数据量不是特别大时
4). 相关API:
a. SQLiteOpenHelper: 数据库操作的抽象帮助类
abstract void onCreate(SQLiteDatabase db): 用于创建表abstract void onUpgrade(): 用于版本更新SqliteDatabase getReadableDatabase() : 得到数据库连接
b. SqliteDatabase: 代表与数据库的连接的类
long insert(): 用于执行insert SQL, 返回id值int update(): 用于执行update SQLint delete(): 用于执行delete SQLCursor query(): 用于执行select SQL, 返回包含查询结果数据的CursorCursor rawQuery(String sql, String[] selectionArgs)beginTransaction(): 开启事务setTransactionSuccessful(): 设置事务是成功的endTransaction(): 结束事务, 可能提交事务或回滚事务static openDatabase(String path, CursorFactory factory, int flags): 得到数据库连接
c. Cursor : 包含所有查询结果记录的结果集对象(光标,游标)
int getCount() : 匹配的总记录数boolean moveToNext() : 将游标移动到下一条记录的前面Xxx getXxx(columnIndex) : 根据字段下标得到对应值int getColumnIndex(columnname): 根据字段名得到对应的下标
5). Android单元测试:
1. 添加配置信息
<application><!– 使用android测试包 --><uses-library android:name="android.test.runner" /></application><!-- android:targetPackage的值应与manifest的package的值一致--><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="com.atguigu.t4_storage” />
2. 编写测试类class StudentTest extends AndroidTestCase
6). 应用总结:
1. 如何在列表(ListView)显示以后更新列表: adapter.notifyDatasetChanged();
2. 使用系统定义布局: android.R.layout.xxx
3. 使用ListActivity:
1). MyActivity extends ListActivity
2). 在布局文件的<ListView id="@android:id/list">
3). 如果在没有数据时想显示提示视图: <TextView id="@android:id/empty">
4. 响应式操作的一般工作(3个):
1).更新内存数据(集合)
2).更新数据存储区的数据(数据库, SP等)
3). 更新界面
6. 远程网络服务器存储
1). 对于联网的APP来说, 可能需要通过请求向服务器提交请求数据, 也可能需要从服务器端获取数据显示
2). 联网请求功能的3步:
a. 在主线程, 显示提示视图(ProgressBar/ProgressDialog)
b. 在分线程, 请求服务器(url), 得到返回的数据
c. 在主线程, 更新界面
1. 移除/隐藏视图
2. 显示数据
3). 如何编码实现客户端与服务器端的交互
a. JDK内置的原生API
URL
HttpUrlConnection
b. Android内置的包装API
HttpClient 浏览器
HttpGet/HttpPost 请求
HttpResonse 响应
HttpEntity 请求体/响应体
c. 异步网络请求框架
Volley
RequestQueue : 请求队列
addRequest(request) : 将一个请求对象添加到队列, 会自动在分线程执行请求
Request
StringRequest: 返回的数据为String
StringRequest(String url, Listener, ErrorListener)
JsonRequest : 返回的数据为JSON
ImageRequest : 返回的数据为图片对象(Bitmap)
Xutils(后面讲)
8. 应用练习
-----------------------------------------------------------1. 功能描述:修改手机防盗的名称2. 关键技术点:1. SharedPreferences的使用2. AlertDialog的使用3. GridView+BaseAdapter的使用4. item的长按监听
------------------------------------------------------------1. 功能描述:黑名单的管理(添加,删除,修改和列表显示)2. 关键技术点:1. Sqlite数据库的操作2. ListView列表显示3. AlertDialog的使用4. contextMenu的使用
------------------------------------------------------------1. 功能描述:下载服务器端最新的APK, 显示下载进度, 下载完成自动安装2. 关键技术点:1. SD卡读写2. 带下载进度的水平ProgressDialog的使用3. 分线程请求网络4. 安装APK
debug调试:
1. 添加断点2. debug运行3. debug的常用操作:3.1. 单步跳过(Step over): 执行完当前行, 进入下一行3.2. 跳入(Step into): 进入方法执行3.3. 跳出(step return): 跳出当前执行的方法3.3. 断点跳过(Resume): 执行完当前断点区域, 进入下一个断点(如果没有执行完)4. 查看Variables中的变量变化5. 右键变量名-->watcher查看变量的内容
0 0
- 04_数据存储
- 02_数据存储
- 01_数据存储
- android数据存储_概述
- cocos2d_x_04_计时器_数据存储
- Android笔记_数据存储
- Android_存储数据_笔记
- android数据存储_内部存储
- android数据存储_外部存储
- Android基础_数据存储一_文件存储
- ORACEL数据存储_事务(C#)
- Android开发_数据存储之SharedPreferences
- 容器存储数据_迭代器JAVA112-115
- _轻量级ios数据沙盒存储
- android(7)_数据存储与访问1_文件
- 112_容器_数据存储练习_JavaBean的介绍
- Android学习 数据存储之_文件存储
- Android基础_数据存储二_SharedPreferences存储
- 菜鸟学Android笔记(四十七):自定义标签开发案例及打包
- 转载Mysql的乱码问题
- 关于心理的二十五种倾向(查理·芒格)-1
- Java项目迁移中的问题
- GRE写作必备句型
- 04_数据存储
- HDU 5072 Coprime (单色三角形+容斥原理)
- 安卓卸载一个程序的代码
- html 学习笔记2
- C# 中的委托和事件(通俗易懂)
- Python发邮件
- 课程设计:十大歌手排行榜
- iOS添加日期选择器
- 2012年5月SAT香港真题解析