0
當我看到使用視頻,照片,歌曲等文件的Android應用時,這些內容在打開時已經顯示出來。我試圖在我的應用程序中查詢所有這些,即使只有100首歌曲,我也必須等待幾百毫秒。當我想要獲取圖片或視頻時,大概需要同一時間。 Google Play上看到的應用程序如何實現這種加載速度?他們還能夠(例如)在加載應用程序和查找文件之前使用此信息(音樂播放器小部件)創建小部件。如何立即獲取文件資源?
我如何加載歌曲的一個例子:
final String[] mediaProjection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.YEAR,
MediaStore.Audio.Media.DATE_ADDED,
MediaStore.Audio.Media.DATE_MODIFIED,
MediaStore.Audio.Media.DATA,};
ContentResolver songResolver = getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = songResolver.query(musicUri, mediaProjection, null, null, null);
if (musicCursor != null && musicCursor.moveToFirst()) {
int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
int albumIdColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
int artistIdColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST_ID);
int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int albumColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int durationColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int yearColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.YEAR);
int dateAddedColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATE_ADDED);
int dateModifiedColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATE_MODIFIED);
int pathColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
do {
long songId = musicCursor.getLong(idColumn);
long songAlbumId = musicCursor.getLong(albumIdColumn);
long songArtistId = musicCursor.getLong(artistIdColumn);
String songTitle = musicCursor.getString(titleColumn);
String songAlbum = musicCursor.getString(albumColumn);
String songArtist = musicCursor.getString(artistColumn);
long songDuration = musicCursor.getLong(durationColumn);
int songYear = musicCursor.getInt(yearColumn);
int songDateAdded = musicCursor.getInt(dateAddedColumn);
int songDateModified = musicCursor.getInt(dateModifiedColumn);
String songPath = musicCursor.getString(pathColumn);
// Add these things into a list
// ...
}
} while (musicCursor.moveToNext());
}
if (musicCursor != null) {
musicCursor.close();
}
return true;
當你「......在我的應用程序中查詢所有這些...」時,你可以發佈代碼的示例代碼片段嗎? –