简介

本文介绍 Android 4.0 (ICS) 相对于 2.3 的修改,在之前说过的内容这里不再赘述,要了解详情请到介绍 2.3 的文章:Android MediaProvider数据库模式

Android 4.0 相对于 2.3 数据库改动较大,主要是为了加入 MTP 文件传输模式的支持而做的修改:

  • 原本只有多媒体文件(音乐/视频/图片)才会保存进数据库,现在所有文件均会保存进叫 files 的表,只是非多媒体文件不用分析(如分析专辑名等)。
  • 相应地,原来的音乐、视频、图片的表变成了视图,是从 files 表生成的。其他辅助表例如专辑封面、艺术家、缩略图的表保持不变。
  • MTP 文件传输模式下读取的文件,就是 files 表中存在的文件,若文件没有保存进 files 表则不会显示。
  • 为了使 MTP 模式下手机端删除文件时能通知到主机,在数据库中加入了一个触发器 files_cleanup,里面使用了一个 SQLite 自定义函数来发送通知。只要删除 files 表就会发送通知。

虽然做了若干修改,但上层应用访问数据库完全不受影响,可以不用关心。但媒体文件扫描速度会变慢,因为写入数据库操作占用了扫描的大部分时间,而现在需要写入的文件大幅度增加。