在android 4.4及以下版本中,谁在启动时加载本机应用程序(/system/bin/*)
,我认为init.rc文件负责,这是正确的吗?
然后,如果本机应用程序崩溃(例如/system/bin/mediaserver
),它会自动重启,那么问题是:谁负责重启应用程序?有文件吗?
答案 0 :(得分:0)
ActivityManagerService重新启动本机应用程序。
logcat
在activity manager service
重新启动应用时,通常会在正常日志和/或事件日志中发生一些喋喋不休
(logcat -b events).
更多信息:
如果您看到ActivityManagerService.finishForceStopPackageLocked()方法的代码,则此方法会使用操作Intent.ACTION_PACKAGE_RESTARTED
触发Intent。
从各种方法调用它,如:
ActivityManagerService.forceStopPackage()
IPackageDataObserveronRemoveCompleted.onRemoveCompleted()
所以内部有一个PackageDataObserver
ActivityManagerService
在Intent.ACTION_PACKAGE_RESTARTED
中实现,如果有任何包被删除,则会观察,如果需要重新启动,则会触发一个意图行动ActivityManagerService.forceStopPackage()
使用{{1}}强制关闭每个包,它知道要重启的包。
希望它能够消除疑虑。