Sar*_* Ma 6 java android bitmap android-music-player
调用MediaMetadata.getString,在报告中有以下崩溃,但并不总是重复:
java.lang.RuntimeException: Could not read bitmap from parcel blob.
at android.graphics.Bitmap.nativeCreateFromParcel(Native Method)
at android.graphics.Bitmap.access$000(Bitmap.java:32)
at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1477)
at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1469)
at android.os.Parcel.readParcelable(Parcel.java:2246)
at android.os.Parcel.readValue(Parcel.java:2146)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.getCharSequence(BaseBundle.java:953)
at android.os.Bundle.getCharSequence(Bundle.java:716)
at android.media.MediaMetadata.getText(MediaMetadata.java:334)
at android.media.MediaMetadata.getString(MediaMetadata.java:347)
Run Code Online (Sandbox Code Playgroud)
代码就像吹,MediaMetadata元是来自api MediaSessionManager.OnActiveSessionsChangedListener的控制器,它应该由第三方音乐应用程序创建.
meta.getString(MediaMetadata.METADATA_KEY_ALBUM_ARTIST);
meta.getString(MediaMetadata.METADATA_KEY_ARTIST);
meta.getString(MediaMetadata.METADATA_KEY_AUTHOR);
meta.getBitmap(MediaMetadata.METADATA_KEY_ART);
meta.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
meta.getString(MediaMetadata.METADATA_KEY_ALBUM);
meta.getString(MediaMetadata.METADATA_KEY_TITLE);
Run Code Online (Sandbox Code Playgroud)
为什么getString将解析位图?当这种情况发生时,内存是否可能出局?
我认为当您将大位图放入MediaMetaData对象中时会发生这种情况.putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, icon)。该位图用于MediaDescription,因此在序列化时它应该非常小。实际上,每次调用getString元数据时它都会被反序列化。
因此,此问题的解决方案是仅使用小位图METADATA_KEY_DISPLAY_ICON或尽可能不使用它。
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |