在Android4.4和更低版本中,谁在启动时加载原生应用程序(/system/bin/*)
,我认为文件init.rc负责,对吗?
然后,如果本机应用程序崩溃(例如/system/bin/mediaserver
),它会自动重启,那么问题是:谁负责应用程序重启?有文件吗?
发布于 2016-08-31 07:48:01
ActivityManagerService重新启动本机应用程序。
当activity manager service
重启应用程序时,在正常日志和/或事件日志中,logcat
中通常会有一些聊天
(logcat -b events).
更多信息:
如果您看到ActivityManagerService.finishForceStopPackageLocked()方法的代码,此方法将激发一个带有动作Intent.ACTION_PACKAGE_RESTARTED
的Intent。
它是从不同的方法调用的,比如:
ActivityManagerService.forceStopPackage()
IPackageDataObserveronRemoveCompleted.onRemoveCompleted()
因此,在内部,有一个在ActivityManagerService
中实现的PackageDataObserver
,它观察是否有任何包被删除,如果需要重新启动,则使用动作Intent.ACTION_PACKAGE_RESTARTED
触发一个意图
而且每个包都是使用ActivityManagerService.forceStopPackage()
强制关闭的,它知道要重新启动哪个包。
希望这能消除疑虑。
https://stackoverflow.com/questions/39243627
复制相似问题