Was ist falscher Tod in Android?

Ich weiß, es klingt eine faulen Frage .. aber ich habe wirklich keine Ahnung, wie dieses Szenario passiert ist, und ich kann auch nicht viel Informationen darüber bei Google finden.

Hintergrund:

  • Größe der Bitmap, die von der Kamera über die Absicht zurückgegeben wird?
  • Google Cloud Messaging mit CCS
  • ArrayAdapter.NotifyDataSetChanged () funktioniert nicht?
  • Android AppWidget TextView: So stellen Sie Hintergrundfarbe zur Laufzeit ein
  • Query Android Content Provider von der Befehlszeile (Adb Shell)
  • Volley aus Speicherfehler, seltsamer Zuweisungsversuch
  • Es ist eine App mit IPC: Ich habe einen Service, der in separaten Prozess läuft. Manchmal ist der Service getötet .. aber es ist nicht wirklich "offiziell sterben", stattdessen bekam ich einen Begriff aus dem ActivityManager namens " Starker Tod ". Wenn das passiert ist, verhält sich der Dienst wie ein Zombie. Es ist lebendig, aber es funktioniert nicht wirklich.

    04-12 10: 03: 37.935 728 830 I ActivityManager: Force Finishing Aktivität ActivityRecord {11eee41f u0 com.android.staging / com.android.activities.MainActivity t8210} 04-12 10: 03: 37.937 728 830 I ActivityManager: Force Stoppen Service ServiceRecord {291a4c9b u0 com.android.staging / com.android.services.CallService} 04-12 10: 03: 37.969 728 2563 W ActivityManager: Starker Tod für ProcessRecord {27ecf545 11057: com.android.staging / u0a268}, curProc Für 11057: null

  • Wie man das Pixel des Pixelpixels berechnet
  • Hinzufügen / Löschen von Seiten zu ViewPager dynamisch
  • Android: Ton im mp3-Format aufnehmen
  • Apache Cordova Splash Screens nicht in Android
  • Verknüpfe mehrere Strings in XML?
  • Wird Google unterstützt NDK C ++ Abstürze in Firebase Crash Reporting?
  • One Solution collect form web for “Was ist falscher Tod in Android?”

    Die beleidigende Zeile finden Sie hier: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/com/android/server/am/ActivityManagerService. Java / # 4858 (Unterschiedliche Linie für verschiedene Versionen von Android L)

    Ich nehme an, du benutzt irgendeine Form von Android L, da diese spezielle Fehlermeldung erst dann hinzugefügt wurde.

    Wenn Sie einen ContentProvider in Ihrem Prozess ausführen, können diese beiden Kommentare im ActivityManagerService hilfreich sein:

     9303 // NOTE: there is still a race here where a signal could be 9304 // pending on the process even though we managed to update its 9305 // adj level. Not sure what to do about this, but at least 9306 // the race is now smaller. 9307 if (!success) { 9308 // Uh oh... it looks like the provider's process 9309 // has been killed on us. We need to wait for a new 9310 // process to be started, and make sure its death 9311 // doesn't kill our process. 

    und dann …

     9317 appDiedLocked(cpr.proc); 

    AppDiedLocked kann auch von anderen Quelldateien aufgerufen werden: ActiveServices.java und ActivityStackSupervisor.java, man hängt davon ab, dass DeadObjectException geworfen wird, das andere auf RemoteException.

    AppDiedLocked sieht so aus

     4853 final void appDiedLocked(ProcessRecord app, int pid, IApplicationThread thread) { 4854 // First check if this ProcessRecord is actually active for the pid. 4855 synchronized (mPidsSelfLocked) { 4856 ProcessRecord curProc = mPidsSelfLocked.get(pid); 4857 if (curProc != app) { 4858 Slog.w(TAG, "Spurious death for " + app + ", curProc for " + pid + ": " + curProc); 4859 return; 4860 } 4861 } 

    Aus irgendeinem Grund ist das curProc nicht das gleiche wie das App ProcessRecord, und die appDiedLocked-Methode wird kurz geschnitten. In deinem Fall ist curProc null, wieder aus irgendeinem Grund.

    Lange Geschichte kurz: Ihr Prozess starb, oder wurde getötet, und einige Zustand oder Zustand ist zu verhindern, dass appDiedLocked fortgesetzt wird, um die KillProcess-Befehle auszuführen. Sie haben noch etwas Untersuchung / Protokollierung zu tun, um herauszufinden, warum das passiert ist.

    Wenn du einen Dienst hast, den du am Leben halten willst, es sei denn, du machst es schon, ich würde empfehlen, dass du eine Statusleiste benachrichtigt hast, so dass die Wahrscheinlichkeit, dass es getötet wird, gesenkt wird.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.