(Android)从Fragment子类中的新线程检索音乐专辑艺术时出错

(Android)从Fragment子类中的新线程检索音乐专辑艺术时出错,android,Android,在Fragment子类中,我创建了一个新线程并尝试检索相册位图,但应用程序停止工作。我使用FragmentPagerAdapter在MainActivity类中使用ViewPager的片段。 下面是线程类的代码- new Thread() { public void run() { ContentResolver musicResolver = getActivity().getContentResolver(); Uri musi

在Fragment子类中,我创建了一个新线程并尝试检索相册位图,但应用程序停止工作。我使用FragmentPagerAdapter在MainActivity类中使用ViewPager的片段。 下面是线程类的代码-

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; 前-->返回结果

但是应用程序停止工作了,那么您发布一个错误,说明它停止工作的确切原因如何?由于缺乏细节,投票结束。检查