2016-04-16 5 views
7

Ich habe den Absturz unten (über Crashlytics) gesehen, aber war nicht in der Lage, die Ursache zu identifizieren oder den Absturz zu reproduzieren. Es kommt auf einer Vielzahl von Geräten und Android-Versionen vor. Die App verwendet appcompat-v7: 23.2.1. Sieht es sonst noch jemand? Wie Sie sehen können, tritt der Absturz innerhalb der onCreate() Methode von HomeActivity auf, die android.support.v7.app.AppCompatActivity erweitert. Innerhalb von AppCompatDelegateImplV7.createSubDecor gibt der Aufruf an mWindow.findViewById(android.R.id.content) manchmal null zurück. Dies führt wiederum zu einer NullPointerException in Zeile 475. Für mich ist das eine Race-Bedingung innerhalb des AppCompat-Codes.Intermittierende NullPointerException von AppCompatDelegateImplV7.createSubDecor()

Derselbe Absturz tritt in einer anderen Aktivität auf und beide verwenden CoordinatorLayout als ihr Stammlayoutelement. Dieses Element wurde ungefähr zu der Zeit eingeführt, als der Absturz auftauchte, und ich kann nicht anders, als mich zu fragen, ob es eine Verbindung gibt. Hier

ist der relevante Teil des Stapels:

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.ViewGroup.getChildCount()' on a null object reference 
    at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:475) 
    at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:309) 
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:273) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at com.bleacherreport.android.teamstream.activities.HomeActivity.onCreate(HomeActivity.java:181) 
+0

Absturz tritt auch bei den folgenden Versionen von appcompat-v7 auf: 23.1.1; 23.2.0; 23.3.0 – markproxy

+0

CoordinatorLayout scheint nicht auf den Absturz bezogen zu sein; das zu beseitigen, ließ den Absturz nicht verschwinden. Seltsamerweise macht das Herunterstufen von Play Services von 8,4 auf 7,8 den Absturz zunichte. Da ich mir nicht vorstellen kann, wie es eine direkte Verbindung geben könnte, muss ich davon ausgehen, dass Play Services 8.4 einen Zeitunterschied verursacht, der die Wahrscheinlichkeit erhöht, dass eine Wettlaufsituation ausgelöst wird. – markproxy

+0

Eingereichter Problembericht an Google: https://code.google.com/p/android/issues/detail?id=207638&thanks=207638&ts=1461213833 – markproxy

Antwort

1

Chris Banes vorgeschlagen eine Abhilfe: innerhalb der onCreate() Methode Aktivitäten, fügen Sie einen Aufruf an getWindow().getDecorView() vor super.onCreate() Aufruf. Erste Tests dieser Problemumgehung sind sehr vielversprechend.

Der Code endet wie folgt aussehen:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // Workaround for issue reported to Google: https://code.google.com/p/android/issues/detail?id=207638 
    // Making this call here causes the content view to be populated, avoiding the occasional crashes due 
    // to null content view when calling setContentView() below. 
    getWindow().getDecorView(); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home_activity); // <-- Your Activity layout here 

    ... 
} 

aktualisieren: mit dieser Problemumgehung bereitgestellt, wir jetzt Null Vorkommen dieser Absturz sehen.

Aktualisieren: Dieser Fehler war reported fixed in 23.4.0.

+1

Ich hatte den gleichen Fehler und es ist nicht in 23.4.0.1 behoben. Aber diese Problemumgehung funktioniert. –

Verwandte Themen