Ik ben bezig om bugs te fixen in een android applicatie die niet door mij is geschreven. De meeste bugs en problemen heb ik op kunnen lossen door goed te debuggen en code te analyseren. Echter nu zit ik nog met een hardnekkig probleem waarvan ik de oorzaak (nog) niet kan vinden. Het probleem is als volgt:
Vanuit een scherm wordt een andere Activity gestart (meestal vanuit de class CasinoGameChanceView). Direct gaat het mis met een InflateException en een Exception die vanuit een andere class wordt opgegooid maar niet wordt afgevangen:
- InflateException in CasinoGameChanceView op regel 2 in het bijbehorende xml bestand die geladen wordt
- InflateException in CasinoGameChanceView op regel 40 in het bijbehorende xml bestand die geladen wordt
- InflateException in DialogActivity (eigen class) op regel 21 in het bijbehorende xml bestand die geladen wordt
- Binary XML file line #77: Error inflating class <unknown> zonder verdere info. Dus ik weet niet vanuit welke class deze komt
De onderste error uit bovenstaande log is exact hetzelfde voor alle 4 InflateExceptions. Het meest logische is dat de eerste Exception de tweede veroorzaakt aangezien de tijd 0 of 1 seconde eerder geregistreerd word. Echter klinkt dat wat onlogisch aangezien de tweede exception bij alle 4 de crashes hetzelfde is. Je zou dus denken dat de oorzaak is. De vraag waar ik nu mee zit is het volgende:
Kan een InflateException ontstaan als de applicatie een Exception opgooit die niet afgevangen wordt (en de applicatie gekilled wordt zodat deze weer opnieuw start)?
Of is het juist zo dat toch de InflateException eerst wordt opgegooid en als gevolg de andere Exception ontstaat? Als dit zo zou zijn, wat zouden dan oorzaken kunnen zijn van een InflateException? Deze InflateException wordt dus maar uiterst zelden in de telefoon opgegooid over alle Activity starts heen bekeken.
Ook wordt ergens PhotoAssignmentView gestart zonder op het eerste gezicht aantoonbare oorzaak. Er zit namelijk geen harde link tussen PhotoAssignmentView en CasinoGameChanceView. Ze roepen elkaar niet aan.
Vanuit een scherm wordt een andere Activity gestart (meestal vanuit de class CasinoGameChanceView). Direct gaat het mis met een InflateException en een Exception die vanuit een andere class wordt opgegooid maar niet wordt afgevangen:
Het vervelende is dat in vrijwel alle gevallen dit probleem zich niet voordoet. Enkele keren op de 30 keer gaat het fout. Ook is het lijnnummer en class/xml waar dit zich voordoet verschillend. Ik heb nu 4 logs met de volgende combinaties:quote: debug2011-10-12 17:18:36
Message: Unable to start activity ComponentInfo{com.erfenis/com.erfenis.views.CasinoGameChanceView}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
android.app.ActivityThread.access$1500(ActivityThread.java:121)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:3701)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
dalvik.system.NativeStart.main(Native Method)
2011-10-12 17:18:37
Message: Unable to start activity ComponentInfo{com.erfenis/com.erfenis.views.PhotoAssignmentView}: java.lang.NullPointerException: Assignment not found.
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
android.app.ActivityThread.access$1500(ActivityThread.java:121)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:3701)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
com.android.internal.os.ZygoteInit.main(ZygoteIni
- InflateException in CasinoGameChanceView op regel 2 in het bijbehorende xml bestand die geladen wordt
- InflateException in CasinoGameChanceView op regel 40 in het bijbehorende xml bestand die geladen wordt
- InflateException in DialogActivity (eigen class) op regel 21 in het bijbehorende xml bestand die geladen wordt
- Binary XML file line #77: Error inflating class <unknown> zonder verdere info. Dus ik weet niet vanuit welke class deze komt
De onderste error uit bovenstaande log is exact hetzelfde voor alle 4 InflateExceptions. Het meest logische is dat de eerste Exception de tweede veroorzaakt aangezien de tijd 0 of 1 seconde eerder geregistreerd word. Echter klinkt dat wat onlogisch aangezien de tweede exception bij alle 4 de crashes hetzelfde is. Je zou dus denken dat de oorzaak is. De vraag waar ik nu mee zit is het volgende:
Kan een InflateException ontstaan als de applicatie een Exception opgooit die niet afgevangen wordt (en de applicatie gekilled wordt zodat deze weer opnieuw start)?
Of is het juist zo dat toch de InflateException eerst wordt opgegooid en als gevolg de andere Exception ontstaat? Als dit zo zou zijn, wat zouden dan oorzaken kunnen zijn van een InflateException? Deze InflateException wordt dus maar uiterst zelden in de telefoon opgegooid over alle Activity starts heen bekeken.
Ook wordt ergens PhotoAssignmentView gestart zonder op het eerste gezicht aantoonbare oorzaak. Er zit namelijk geen harde link tussen PhotoAssignmentView en CasinoGameChanceView. Ze roepen elkaar niet aan.
Ruisende versterker: schakel je subwoofer in.