RecyclerView-MIUI设备澎湃OS滑动异常 java.lang.NoSuchMethodError: No virtual method formatted

本偏文章用于记录在小米澎湃OS中遇到RecyclerView滑动异常导致崩溃问题

崩溃日志如下

java.lang.NoSuchMethodError: No virtual method formatted([Ljava/lang/Object;)Ljava/lang/String; in class Ljava/lang/String; or its super classes (declaration of 'java.lang.String' appears in /apex/com.android.art.compatible/javalib/core-oj.jar)
                                                     	at android.widget.FlingAnimationStubImpl.getOptimizeOfVelocityY(FlingAnimationStubImpl.java:200)
                                                     	at android.widget.OverScroller.fling(OverScroller.java:478)
                                                     	at android.widget.OverScroller.fling(OverScroller.java:444)
                                                     	at androidx.recyclerview.widget.RecyclerView$ViewFlinger.fling(RecyclerView.java:5599)
                                                     	at androidx.recyclerview.widget.RecyclerView.fling(RecyclerView.java:2614)
                                                     	at com.logan.common.view.FlingFrictionRecycleView.fling(FlingFrictionRecycleView.kt:22)
                                                     	at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3557)
                                                     	at android.view.View.dispatchTouchEvent(View.java:15872)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3191)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2829)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at com.scwang.smart.refresh.layout.SmartRefreshLayout.dispatchTouchEvent(SmartRefreshLayout.java:913)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3197)
                                                     	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2847)
                                                     	at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:553)
                                                     	at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1908)
                                                     	at android.app.Activity.dispatchTouchEvent(Activity.java:4579)
                                                     	at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
                                                     	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:511)
                                                     	at android.view.View.dispatchPointerEvent(View.java:16155)
                                                     	at com.xiaomi.mirror.MiuiMirrorImpl.isHandled(MiuiMirrorImpl.java:152)
                                                     	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7956)
                                                     	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7723)
                                                     	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7094)
                                                     	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7151)
                                                     	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7117)
                                                     	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7282)
                                                     	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7125)
                                                     	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7339)
                                                     	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7098)
                                                     	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7151)
                                                     	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7117)

在github的链接: SmartRefreshLayout 框架的issues中也可以看到有关于这个问题的提交。

在这里插入图片描述

链接: MIUI设备滑动异常 :https://github.com/scwang90/SmartRefreshLayout/issues/1553。但是这并不是框架引起的,可以分析出来这个问题反馈都是来自于小米的澎湃OS系统导致,其中反馈中描述到小米社区也有人反馈到这个问题。

在这里插入图片描述

我们可以临时去修复解决这个问题,防止用户app异常崩溃退出:

方案如下自定义View捕获这个异常

import android.content.Context
import android.util.AttributeSet
import androidx.recyclerview.widget.RecyclerView

/*修复小米澎湃OS在使用时候滑动会异常导致崩溃*/
class FixHpOSRecycleView : RecyclerView {

    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )

    override fun fling(velocityX: Int, velocityY: Int): Boolean {
        try {
            return super.fling(velocityX, velocityY)
        } catch (ex: Throwable) {
            return false
        }
    }
}

本篇文章记录结束,希望能对你有所帮助。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值