OPPO崩溃问题解决

OPPO崩溃问题解决

在APM上监控到一个高频cash,如下

崩溃线程
FinalizerWatchdogDaemon

Caused by: java.util.concurrent.TimeoutException: android.content.res.AssetManager$AssetInputStream.finalize() timed out after 10 seconds
    at android.content.res.AssetManager$AssetInputStream.close(AssetManager.java:606)
    at android.content.res.AssetManager$AssetInputStream.finalize(AssetManager.java:639)
    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:198)
    at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:177)
    at java.lang.Thread.run(Thread.java:818)
主线程
main

    at android.content.res.AssetManager.isUpToDate(Native Method)
    at android.app.ActivityThread.getPackageInfo(ActivityThread.java:1938)
    at android.app.ActivityThread.getPackageInfoNoCheck(ActivityThread.java:1912)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1459)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:159)
    at android.app.ActivityThread.main(ActivityThread.java:5541)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

最后找到大神文章
https://blog.csdn.net/qq_17766199/article/details/84789495
解决方案:

 private void fixOPPOVersionCash(){
 		//需要修复的版本号
        String[] versionPre ={"6.0.1","5.1.1","5.1"};
        String version  = DeviceUtils.getSystemVersion();
        BestLog.d("DeviceUtils.getSystemVersion()="+version);

        if(!Arrays.asList(versionPre).contains(version)){
            return;
        }

        String deviceModel = Utils.getDeviceModel();
        BestLog.d("Utils.getDeviceModel()="+deviceModel);
        if(!TextUtils.isEmpty(deviceModel)){
            if(deviceModel.contains("OPPO")){
                try {
                	//停止该进程
                    Class clazz = Class.forName("java.lang.Daemons$FinalizerWatchdogDaemon");
                    Method method = clazz.getSuperclass().getDeclaredMethod("stop");
                    method.setAccessible(true);
                    Field field = clazz.getDeclaredField("INSTANCE");
                    field.setAccessible(true);
                    method.invoke(field.get(null));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值