【发布时间】:2019-01-05 06:05:43
【问题描述】:
我在我的 android 应用程序中使用 youtube api 来为我的 RecyclerView 中的视频加载缩略图。以下是我在适配器中的实现:
private final Map<YouTubeThumbnailView, YouTubeThumbnailLoader> thumbnailViewToLoaderMap;
这包含每个适配器元素的YouTubeThumbnailView 的加载器。这是我们用于初始化YouTubeThumbnailLoader(s) 的代码:
YouTubeThumbnailLoader loader = thumbnailViewToLoaderMap.get(holder.thumbnail);
final String videoId = Utils.getYoutubeIdFromUrl(m.getYoutubeUrl());
holder.thumbnail.setTag(videoId);
if(loader != null) {
loader.setVideo(videoId);
}
}
在初始化ViewHolder的元素时,我初始化缩略图加载器如下:
private void setupYoutubeThumbnail() {
thumbnail.initialize(RiyazApplication.applicationInstance
.getString(R.string.youtube_api_developer_key),
thumbnailListener);
thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(v.getTag() != null && itemClickListener != null) {
itemClickListener.onClickVideo(mList.get(getAdapterPosition()));
}
}
});
以及释放缩略图加载器的代码如下:
public void releaseThumbnailLoaders() {
final Set<YouTubeThumbnailView> keysSet = thumbnailViewToLoaderMap.keySet();
for(YouTubeThumbnailView view: keysSet) {
final YouTubeThumbnailLoader loader = thumbnailViewToLoaderMap.get(view);
if(loader != null) {
loader.release();
}
}
thumbnailViewToLoaderMap.clear();
}
在我的 crashalytics 中,我收到以下异常:
Fatal Exception: java.lang.IllegalStateException: YouTubeServiceEntity not initialized
at android.os.Parcel.readException(Parcel.java:1497)
at android.os.Parcel.readException(Parcel.java:1443)
at com.google.android.youtube.player.internal.l$a$a.a(Unknown Source)
at com.google.android.youtube.player.internal.o.a(Unknown Source)
at com.google.android.youtube.player.internal.p.(Unknown Source)
at com.google.android.youtube.player.internal.ac.a(Unknown Source)
at com.google.android.youtube.player.YouTubeThumbnailView$a.a(Unknown Source)
at com.google.android.youtube.player.internal.r.g(Unknown Source)
at com.google.android.youtube.player.internal.r$c.a(Unknown Source)
at com.google.android.youtube.player.internal.r$b.a(Unknown Source)
at com.google.android.youtube.player.internal.r$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5052)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(NativeStart.java)
我不确定,为什么我会得到这个。有人可以帮忙吗?
【问题讨论】:
-
您好,YouTube 播放器与加载视频缩略图有什么关系?这两件事应该分开。
-
@Pierfran 看看第 8 个堆栈跟踪。堆栈跟踪中提到了缩略图视图。
-
为什么不使用 YouTube 数据 API 下载缩略图并将其显示在图像视图中?
-
嗯..我没试过,但这应该也没有问题吧?
-
YouTubeServiceEntity的代码在哪里
标签: android youtube-api illegalstateexception android-youtube-api