尝试获取应用程序对象时偶尔发生崩溃

时间:2019-06-26 14:43:40

标签: java android android-manifest crashlytics

我的应用程序在以下行偶尔报告NullPointerException:

MyApplication.myAppInstance.updateDay();

,据我了解myAppInstance为空。在应用程序的主要活动之一的onStart()方法的super.onStart()下方调用上述行

在应用程序类中,我有:

public static MyApplication myAppInstance;
public MyApplication() {
    myAppInstance = this;
}

这是将变量写入代码的唯一位置。

崩溃仅发生在Android 9上。

是什么原因造成的?该应用有点假设该应用实例将始终可用。

我应该注意,此崩溃仅出现在Play控制台中,而不出现在Crashlytics中。

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3194)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3302)
  at android.app.ActivityThread.-wrap12 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1891)
  at android.os.Handler.dispatchMessage (Handler.java:108)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7425)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)
Caused by: java.lang.NullPointerException: 
  at com.timSim.myScheduler.MainActivity.onStart (MainActivity.java:667)
  at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1339)
  at android.app.Activity.performStart (Activity.java:7392)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3157)

这种情况很少发生,所以我无法复制。

1 个答案:

答案 0 :(得分:0)

使用Application类。您需要在manifests.xml中声明它。

尝试一下:

 <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:name=".MyApplication"
        .../>

还有

class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // TODO:
    }
}