Android 10 Активность при создании аварии - PullRequest
2 голосов
/ 17 января 2020

Активность spla sh моего приложения хорошо работает на всех устройствах, кроме устройства Android 10, которое я недавно обновил.

Вот мой код:

public class SplashScreen extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(FirebaseAuth.getInstance().getUid() != null)
      startActivity(new Intent(this, HomeActivity.class));
    else
      startActivity(new Intent(this, LoginActivity.class));

    finish();
  }

}

Я также пытался перейти непосредственно к HomeActiviy или LoginActivity, но все равно вылетает при попытке запустить на Android 10 устройство

Error occurs when calling super.onCreate(savedInstanceState)

2020-01-17 13:58:25.527 23561-23561/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: rickroydaban.projects.android.memorise, PID: 23561
    java.lang.RuntimeException: Unable to start activity ComponentInfo{rickroydaban.projects.android.memorise/rickroydaban.android.memorise.ui.SplashScreen}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.ReportFragment.setProcessListener(androidx.lifecycle.ReportFragment$ActivityInitializationListener)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3448)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7811)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.ReportFragment.setProcessListener(androidx.lifecycle.ReportFragment$ActivityInitializationListener)' on a null object reference
        at androidx.lifecycle.ProcessLifecycleOwner$3.onActivityCreated(ProcessLifecycleOwner.java:162)
        at android.app.Application.dispatchActivityCreated(Application.java:392)
        at android.app.Activity.dispatchActivityCreated(Activity.java:1232)
        at android.app.Activity.onCreate(Activity.java:1513)
        at androidx.core.app.ComponentActivity.onCreate(ComponentActivity.java:81)
        at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:149)
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:313)
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
        at rickroydaban.android.memorise.ui.SplashScreen.onCreate(SplashScreen.java:18)
        at android.app.Activity.performCreate(Activity.java:7955)
        at android.app.Activity.performCreate(Activity.java:7944)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3423)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7811) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076) 

Кто-нибудь смог решить эту проблему?

1 Ответ

2 голосов
/ 17 января 2020

В соответствии с этой проблемой это будет происходить при использовании lifecycle-runtime:2.2.0 (обычно через транзитивную зависимость от Fragment или AppCompat) и lifecycle-process:2.1.0 (обычно через транзитивную зависимость от lifecycle-extensions).

В баге есть несколько способов решения этой проблемы:

Вы можете выполнить одно из следующих действий:

  • Добавить явную зависимость от lifecycle-process:2.2.0-alpha05 чтобы получить новую версию, совместимую с lifecycle-runtime:2.2.0-alpha05
  • Обновите вашу lifecycle:extensions зависимость до 2.2.0-alpha05, чтобы lifecycle-process был обновлен
  • Удалите зависимость lifecycle:extensions полностью и используйте только те библиотеки жизненного цикла, которые вам нужны (например, используйте lifecycle-viewmodel-ktx, если вы хотите ViewModels), чтобы вы вообще не извлекали lifecycle-process

Или, так как проблема совместимости была исправлена ​​в более позднем выпуске, обновите до более поздней версии фрагментов (версия 1.2.0-beta01 или выше) или жизненного цикла 2.2.0-beta01 или выше, если вы напрямую зависите от жизненного цикла.

...