0

我们正在开发一个企业应用程序,自项目启动以来,我们只在OnePlus Nord设备中面临不断崩溃的问题。

我们试图在我们的设备中重现,但它没有被重现,但Firebase Crashlytics总是在实时应用程序中报告它。描述为:

cpe.java 第 11 行

com.oneplus.theme.cpe.onViewAttachedToWindow

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.removeOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener)' on a null object reference
       at com.oneplus.theme.cpe.onViewAttachedToWindow(cpe.java:11)
       at android.view.View.dispatchAttachedToWindow(View.java:20272)
       at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3455)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2273)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1960)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8228)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1041)
       at android.view.Choreographer.doFrame(Choreographer.java:953)
       at android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:1163)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7711)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

在这个阶段,由于它在所有其他设备上运行良好,我们无法查明任何可能导致此问题的代码。

许多 OnePlus Nord 用户报告说,这个问题使我们的无崩溃百分比显着下降!如何解决这个问题?

4

1 回答 1

0

我认为这是一些与视图相关的问题。这就是说您在空视图对象上使用侦听器。因此,请检查您是否先获取视图,然后再应用侦听器。您可以使用 GlobalLayoutListener 检查视图是否已完成绘制。

yourView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override
public void onGlobalLayout() {
  yourView.getViewTreeObserver()
                    .removeOnGlobalLayoutListener(this);
    //Your logic here (You can Put the OnAttachStateChangeListener here)
 }
});
于 2021-07-30T10:07:00.747 回答