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