Android应用程序挂起(不会崩溃)在真实设备上使用RecyclerView的非法方法访问

时间:2016-05-01 06:30:28

标签: android android-recyclerview android-4.4-kitkat

我在我的应用中使用RecyclerView,我的应用只是挂起(不会退出,只是动画停止,应用完全没有响应),并在控制台中显示以下日志:

05-01 09:23:39.075 21296-21296/com.ulouder.ulouder D/dalvikvm: Trying to load lib /data/app-lib/com.ulouder.ulouder-1/libuLouderNative.so 0x41db4c90
05-01 09:23:39.075 21296-21296/com.ulouder.ulouder D/dalvikvm: Added shared lib /data/app-lib/com.ulouder.ulouder-1/libuLouderNative.so 0x41db4c90
05-01 09:23:39.075 21296-21296/com.ulouder.ulouder D/dalvikvm: No JNI_OnLoad found in /data/app-lib/com.ulouder.ulouder-1/libuLouderNative.so 0x41db4c90, skipping init
05-01 09:23:39.345 21296-21296/com.ulouder.ulouder I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@41dab7c8 time:89397538
05-01 09:23:39.350 2281-2319/system_process I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{430106a0 u0 com.ulouder.ulouder/com.ulouder.activities.MainActivity t19} time:89397539
05-01 09:23:42.540 21296-21741/com.ulouder.ulouder D/uLouder: [01 23 2016 09:23:42] Fired event with data: feed loaded nearby
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: DexOpt: illegal method access (call Landroid/support/v7/widget/RecyclerView$ViewHolder;.isUpdated ()Z from Lcom/ulouder/viewholders/PostViewHolder;)
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: Could not find method android.support.v7.widget.RecyclerView$ViewHolder.isUpdated, referenced from method com.ulouder.viewholders.PostViewHolder.access$super
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder W/dalvikvm: VFY: unable to resolve virtual method 17616: Landroid/support/v7/widget/RecyclerView$ViewHolder;.isUpdated ()Z
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder D/dalvikvm: VFY: replacing opcode 0x6f at 0x0031
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: DexOpt: illegal method access (call Landroid/support/v7/widget/RecyclerView$ViewHolder;.flagRemovedAndOffsetPosition (IIZ)V from Lcom/ulouder/viewholders/PostViewHolder;)
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: Could not find method android.support.v7.widget.RecyclerView$ViewHolder.flagRemovedAndOffsetPosition, referenced from method com.ulouder.viewholders.PostViewHolder.access$super
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder W/dalvikvm: VFY: unable to resolve virtual method 17600: Landroid/support/v7/widget/RecyclerView$ViewHolder;.flagRemovedAndOffsetPosition (IIZ)V
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder D/dalvikvm: VFY: replacing opcode 0x6f at 0x0053
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: DexOpt: illegal method access (call Landroid/support/v7/widget/RecyclerView$ViewHolder;.isRemoved ()Z from Lcom/ulouder/viewholders/PostViewHolder;)
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: Could not find method android.support.v7.widget.RecyclerView$ViewHolder.isRemoved, referenced from method com.ulouder.viewholders.PostViewHolder.access$super
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder W/dalvikvm: VFY: unable to resolve virtual method 17613: Landroid/support/v7/widget/RecyclerView$ViewHolder;.isRemoved ()Z
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder D/dalvikvm: VFY: replacing opcode 0x6f at 0x0058
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: DexOpt: illegal method access (call Landroid/support/v7/widget/RecyclerView$ViewHolder;.clearPayload ()V from Lcom/ulouder/viewholders/PostViewHolder;)
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: Could not find method android.support.v7.widget.RecyclerView$ViewHolder.clearPayload, referenced from method com.ulouder.viewholders.PostViewHolder.access$super
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder W/dalvikvm: VFY: unable to resolve virtual method 17595: Landroid/support/v7/widget/RecyclerView$ViewHolder;.clearPayload ()V
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder D/dalvikvm: VFY: replacing opcode 0x6f at 0x007c
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: DexOpt: illegal method access (call Landroid/support/v7/widget/RecyclerView$ViewHolder;.isAdapterPositionUnknown ()Z from Lcom/ulouder/viewholders/PostViewHolder;)
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder I/dalvikvm: Could not find method android.support.v7.widget.RecyclerView$ViewHolder.isAdapterPositionUnknown, referenced from method com.ulouder.viewholders.PostViewHolder.access$super
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder W/dalvikvm: VFY: unable to resolve virtual method 17609: Landroid/support/v7/widget/RecyclerView$ViewHolder;.isAdapterPositionUnknown ()Z
05-01 09:23:42.720 21296-21296/com.ulouder.ulouder D/dalvikvm: VFY: replacing opcode 0x6f at 0x0086
...

它继续用于RecyclerView的许多方法,在日志的末尾用整个应用程序(或线程)崩溃:

05-01 09:23:42.730 21296-21296/com.ulouder.ulouder W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41873ce0)

为什么我会这样?这种情况发生在使用Android 4.4.4(API 19)的真实设备(三星Galaxy S3)上,而我的模拟器与Marshmallow没有问题。

1 个答案:

答案 0 :(得分:0)

Android又一次误导了。与这些错误消息无关。在视图绑定上有一个实际的空指针异常,它使整个线程崩溃,但不知何故它没有正确报告给logcat。