Спорадические сбои при попытке получить объект приложения - PullRequest
1 голос
/ 26 июня 2019

Мое приложение сообщает о случайном исключении NullPointerException в следующей строке:

MyApplication.myAppInstance.updateDay();

, из которого я понимаю, что myAppInstance имеет значение null.Вышеупомянутая строка вызывается в методе onStart() одного из основных действий приложения прямо под super.onStart()

В классе приложения у меня есть:

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

И это единственноеПоместите переменную в код.

Авария происходит только на Android 9.

Что может быть причиной этого?Приложение вроде бы предполагает, что экземпляр приложения будет всегда доступен.

Следует отметить, что этот сбой появляется только в консоли воспроизведения, а не в 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 голосов
/ 26 июня 2019

Использовать 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:
    }
}
...