Android开发Android技术知识Android开发

数据存储方式:一道面试题引发的血案

2018-06-20  本文已影响54人  卖臭豆腐的王致和
转载请注明原创出处,谢谢!

由于面试的挫折,感悟众多,今天写我的第二道面试题。

开始写技术

Android 中的数据存储概述?

* Android 中的UI的作用是什么?
  * 通过View呈现数据
  * 实现于用户的交互
* Android 中的数据来源?
  * 内存(数据断电(重启,关机)则丢失)
  * 外存(数据可以持久保存在手机的sdcard)
  * 网络(数据可以持久存储在云端、服务器)
* **Android 中的数据格式?**
  * 非结构化数据(图片、音频、视频、普通文本···)
  * 半结构化数据(xml)
  * 结构化数据(数据库以二维表的形式对数据进行存储:SQLite)
    **Android 中会结合数据特点采用不同的数据读写方式**
* Android 中的数据存储类型?
  * 直接I/O存储(直接以I/O流的形式对数据进行存储)
  * 偏好设置存储(以键值对Key/Value信息的形式对数据进行存储)
  * SQLite存储(以二维表的形式进行存储)

Android 中的外部存储?

* Android 外部存储概述?
  * Android外部存储一般指外置sdcard的数据存储,外部存储的文件一般比较大,例如图片、视频、音乐···
  * 而且大多数是非结构化数据.
* Android 外部存储的数据权限?
    * 共有数据(一般指所有App都可以访问到的数据)
    * 私有数据(一般指本App内部对象可以访问的数据)必须添加权限
* **Android 外部存储应用的实现及相关API?**
    * 相关步骤

获取外置sdcard的存储状态(是否有可用的sdcard)
获取sdcard的存储目录
设置读写sdcard的权限(假如是私有数据必须设置)
获取外置sdcard的空间大小(尤其是对写的动作)
通过I/O流的方式直接读写sdcard.
* 相关API
1)Environment(状态,共有目录)

isExternalStorageRemovable()
getExternalStorageDirectory()
getExternalStoragePublicDirectory()
    2)Context(应用私有目录)
getExternalStorageDirectory()
getExternalStoragePublicDirectory()
    3)StatFs(目录控件大小)
getBlockCount()
getFreeBlocks()
getAvailableBlocks()
getBlosckSize()
    4)I/O(直接读写数据)

获得内部存储目录(data/data/项目包/...)
获得目录空间大小(是否有足够空间可以存储我们的数据)
直接I/O读写数据?(数据为应用程序私有数据)
* 相关API
1)Context

getFilesDir()
getCacheDir()
openFileOutput()
openFileInput()

2)StatFs
3)I/O
说明:内部存储数据在应用卸载是会被删除。

获得SharedPreferences对象
获得Editor对象(负责编辑,假如是读数据不需要获得此对象)
通过Editor方法存储数据(暂时存在内存)
通过Editor对象的commit方法持久化数据(将数据写到外存)
* 相关API

Context(通过此对象获得SharedPreferences对象)
SharedPreferences(通过此对象获得数据或者获得Editor对象)
Editor(通过此对象实现对数据的编辑操作)

创建或打开数据库
创建对应表(假如表不存在)
操作表中的数据(insert,update,delete,select)
释放数据库资源(释放内存)
* 相关API

Context
SQliteDatabase,SqliteOpenHelper,Cursor,SimpleCursorAdapter,...
SQL(结构化程序语言):DML,DDL,DCL
    DML(数据操纵语言)
    DDL(数据定义语言)
    DCL(数据控制语言)

最后唠叨

ContentProvider实在是没用过,写不出半点东西来,网络要写的话,太大,写不了,而且也不是太熟悉。
其实我想吐槽一下,哪个神经病给Android弄的三级缓存???还分为内存,文件,网络,你开发的是百度云盘还是WPS Office啊,网络这部分不是我们这些小渣渣应该考虑的事情,很多公司应该没哪个实力。
小心OOM,小心OOM,小心OOM

上一篇 下一篇

猜你喜欢

热点阅读