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