【发布时间】:2016-09-29 02:50:54
【问题描述】:
我正在制作一个已定义文件列表的浏览器。 我想压缩空文件夹(就像基于想法的 IDE 通常可以做的那样)
最初我有一个文件列表(我从 MediaStore 获得):
folder1/folder2/folder3/file1.mp3
folder1/folder2/folder3/file2.mp3
folder1/file3.mp3
我希望我的浏览器有这样的结构:
folder1
-folder2/folder3
-file1.mp3
-file2.mp3
-file3.mp3
我是怎么做到的:
当我第一次从 MediaStore 获取文件时,我会在数据库中创建一个表:
id name parent_id has_songs
0 folder1 -1 1
1 folder2 0 0
2 folder3 1 1
当浏览器每次显示文件夹时,它都会向数据库发出请求。 然后我开始检查里面的文件夹(每次检查都需要向数据库提出额外的请求):如果一个文件夹没有歌曲并且只有一个子文件夹,那么压缩它们,然后检查下一个和下一个。
对于上面的示例,如果我想查看文件夹 1 的“内部”,它会向本地数据库发出 3 个请求:
1. Get list of all folders (Make a request to the db here)
2. Check folder2 has one subfolder and doesn't have songs (Make a request to the db here)
3. Check folder3 has one subfolder and doesn't have songs (Make a request to the db here)
1.这是实现这一点的最佳方式吗?
2。是否对性能至关重要 在用户点击时向本地数据库发出如此多的请求?
【问题讨论】:
-
@licon 使用这个库不会改变任何事情,无论如何我必须对数据库执行相同的请求来扩充库树。
标签: java android algorithm sqlite database-schema