Skip to content

Instantly share code, notes, and snippets.

@iflove
Last active July 28, 2022 12:08
Show Gist options
  • Save iflove/727a0f4d92ecd1f07abc807b01194223 to your computer and use it in GitHub Desktop.
Save iflove/727a0f4d92ecd1f07abc807b01194223 to your computer and use it in GitHub Desktop.
Android应用日常异常日志收录
Android应用日常异常日志收录
@iflove
Copy link
Author

iflove commented Jul 11, 2022

原因未知

CrashReport: java.lang.RuntimeException: Unable to destroy activity {cn.mashang.vscreen.base/cn.mashang.vscreen.ui.VSStart}: java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.ViewGroup
        at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5105)
        at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5135)
        at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5427)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5357)
        at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:58)
        at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5410)
        at android.app.ActivityThread.access$3300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.ViewGroup
        at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState(SpecialEffectsController.java:464)
        at androidx.fragment.app.SpecialEffectsController$1.run(SpecialEffectsController.java:211)
        at androidx.fragment.app.SpecialEffectsController$Operation.complete(SpecialEffectsController.java:713)
        at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:770)
        at androidx.fragment.app.SpecialEffectsController$Operation.cancel(SpecialEffectsController.java:615)
        at androidx.fragment.app.SpecialEffectsController.forceCompleteAllOperations(SpecialEffectsController.java:350)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2844)
        at androidx.fragment.app.FragmentManager.dispatchDestroyView(FragmentManager.java:2812)
        at androidx.fragment.app.Fragment.performDestroyView(Fragment.java:3225)
        at androidx.fragment.app.FragmentStateManager.destroyFragmentView(FragmentStateManager.java:744)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:327)
        at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:771)
        at androidx.fragment.app.SpecialEffectsController$Operation.cancel(SpecialEffectsController.java:615)
        at androidx.fragment.app.SpecialEffectsController.forceCompleteAllOperations(SpecialEffectsController.java:350)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2844)
        at androidx.fragment.app.FragmentManager.dispatchDestroy(FragmentManager.java:2820)
        at androidx.fragment.app.FragmentController.dispatchDestroy(FragmentController.java:345)
        at androidx.fragment.app.FragmentActivity.onDestroy(FragmentActivity.java:306)
        at cn.mashang.groups.ui.base.BaseFragmentActivity.onDestroy(BaseFragmentActivity.java:161)
        at cn.mashang.groups.ui.base.MGBaseFragmentActivity.onDestroy(MGBaseFragmentActivity.java:180)
        at cn.mashang.vscreen.ui.VSGetRfidActivity.onDestroy(VSGetRfidActivity.java:452)
        at cn.mashang.vscreen.ui.VSStart.onDestroy(VSStart.java:2032)
        at android.app.Activity.performDestroy(Activity.java:8273)
        at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1344)
        at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5090)

源码出错点:

void applyState(@NonNull View view) { //view 是Fragment的根view,是oncreateView时赋值的,排查了ViewRootImpl  还是没搞明白
                switch (this) {
                    case REMOVED:
                        ViewGroup parent = (ViewGroup) view.getParent();   //ClassCastException

@iflove
Copy link
Author

iflove commented Jul 11, 2022

通过一个LazyAttachFragmentLayout 解决,RecycleView回收时间和fragment事务提交点碰合了. 不要在list.item 频繁操作fragment

java.lang.IllegalArgumentException: No view found for id 0xd3 (unknown) for fragment VsGonggeItemFragment{2be0e53} (4e43eaf2-29a8-4697-95d8-563b3c743a8e id=0xd3 tag=256:259:0:0)
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1840)
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1758)
	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1701)
	at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:488)
	at android.os.Handler.handleCallback(Handler.java:755)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6141)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

@iflove
Copy link
Author

iflove commented Jul 13, 2022

网络异常

OKHttp

java.net.ProtocolException: unexpected end of stream


okhttp3.internal.http1.Http1Codec.FixedLengthSink#close

原因是服务器流被关闭,可能原因:
(1) 在抛出java.net.ProtocolException: unexpected end of stream异常之后,确认一下fileLength和contentLength是否一致, 如果不一致的情况下, 可以设置Transfer-Encoding : chunked来躲过客户端的校验
(2) 针对一个资源或者同一个服务器的频繁请求,最好设置Connection : close,这样可以防止服务器出现反攻击的问题,服务器发现某短时间的请求过于频繁切长期保持长链接,会引发服务器的瘫痪,所以针对服务器的长链接请求会dismiss掉,导致当前请求异常。

@iflove
Copy link
Author

iflove commented Jul 13, 2022

安装apk

apk 解包时存储不够导致失败

D/InstallAppProgress: Installation error code: 1
INSTALL_FAILED_INSUFFICIENT_STORAGE

@iflove
Copy link
Author

iflove commented Jul 13, 2022

Choreographer 未知错误

java.lang.NullPointerException

Attempt to invoke virtual method 'android.view.DisplayListCanvas android.view.RenderNode.start(int, int)' on a null object reference
android.view.ViewRootImpl.draw(ViewRootImpl.java:2800)
android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2608)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6338)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
android.view.Choreographer.doCallbacks(Choreographer.java:686)
android.view.Choreographer.doFrame(Choreographer.java:621)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
android.os.Handler.handleCallback(Handler.java:755)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:154)
android.app.ActivityThread.main(ActivityThread.java:6141)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment