2016-08-31 7 views
1

In Android 4.4 und niedriger, wer lädt eine native Anwendung (/system/bin/*) beim Start, denke ich, dass die Datei init.rc verantwortlich ist, ist es richtig?Native App nach Absturz neu starten

Dann, wenn eine native Anwendung abstürzt (zum Beispiel /system/bin/mediaserver) es automatisch neu starten, dann ist die Frage: Wer ist verantwortlich für den Neustart der Anwendung? Es gibt eine Datei?

Antwort

0

ActivityManagerService startet die nativen Apps neu.

Es gibt in der Regel einige Chatter in logcat, wenn eine App vom activity manager service im normalen Protokoll neu gestartet wird und/oder Ereignisprotokoll

(logcat -b events). 

Mehr Info:

Wenn Sie den Code der Methode ActivityManagerService.finishForceStopPackageLocked() sehen, löst diese Methode eine Aktion mit der Aktion Intent.ACTION_PACKAGE_RESTARTED aus.

Und es wird aus verschiedenen Methoden genannt wie:
ActivityManagerService.forceStopPackage()
IPackageDataObserveronRemoveCompleted.onRemoveCompleted()

So intern gibt es ein PackageDataObserver in ActivityManagerService implementiert, die beobachtet, wenn eine Verpackung entfernt wird, und wenn es braucht ist neu gestartet werden, eine Absicht wird mit der Aktion Intent.ACTION_PACKAGE_RESTARTED

gefeuert Und jedes Paket wird zwangsweise geschlossen mit ActivityManagerService.forceStopPackage(), es weiß, welches Paket neu gestartet werden soll.

Hoffe, es löscht den Zweifel.

+0

Sorry, ich sehe nichts von Logcat, ich sehe nur einen Absturz von/system/bin/mediaserver, aber ich sehe den Neustart von mediaserver nicht mit einer anderen PID – Livio

Verwandte Themen