(Android)从Fragment子类中的新线程检索音乐专辑艺术时出错
在Fragment子类中,我创建了一个新线程并尝试检索相册位图,但应用程序停止工作。我使用FragmentPagerAdapter在MainActivity类中使用ViewPager的片段。 下面是线程类的代码-(Android)从Fragment子类中的新线程检索音乐专辑艺术时出错,android,Android,在Fragment子类中,我创建了一个新线程并尝试检索相册位图,但应用程序停止工作。我使用FragmentPagerAdapter在MainActivity类中使用ViewPager的片段。 下面是线程类的代码- new Thread() { public void run() { ContentResolver musicResolver = getActivity().getContentResolver(); Uri musi
new Thread() {
public void run() {
ContentResolver musicResolver = getActivity().getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] columns = {
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Albums._ID,
MediaStore.Audio.Media.DATA
};
String where = MediaStore.Audio.Media.IS_MUSIC + "=1";
Cursor albumCursor = musicResolver.query(musicUri, columns, where, null,null);
if (albumCursor != null && albumCursor.moveToFirst()) {
int albumColumn = albumCursor.getColumnIndex(MediaStore.Audio.Albums._ID);
do {
long thisAlbum = albumCursor.getLong(albumColumn);
Bitmap album = BitmapFactory.decodeFile(getCoverArtPath(thisAlbum, getActivity()));
if (album == null) {
continue;
}
albumList.add(album);
} while (albumCursor.moveToNext());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
albumAdapter.notifyDataSetChanged();
}
});
}
}
}.start();
下面是我使用的GetCoveragerPath方法-
private static String getCoverArtPath(long albumId, Context context) {
Cursor albumCursor = context.getContentResolver().query(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Albums.ALBUM_ART},
MediaStore.Audio.Albums._ID + " = ?",
new String[]{Long.toString(albumId)},
null
);
boolean queryResult = albumCursor.moveToFirst();
String result = null;
if (queryResult) {
result = albumCursor.getString(0);
}
albumCursor.close();
return result;
}
请帮帮我。我是Android编程新手。在返回结果之前,您必须关闭光标 -->1.close; 前-->返回结果 但是应用程序停止工作了,那么您发布一个错误,说明它停止工作的确切原因如何?由于缺乏细节,投票结束。检查