崩溃后重启本机应用程序

时间:2016-08-31 07:45:53

标签: android nativeapplication

在android 4.4及以下版本中,谁在启动时加载本机应用程序(/system/bin/*),我认为init.rc文件负责,这是正确的吗?

然后,如果本机应用程序崩溃(例如/system/bin/mediaserver),它会自动重启,那么问题是:谁负责重启应用程序?有文件吗?

1 个答案:

答案 0 :(得分:0)

  

ActivityManagerService重新启动本机应用程序。

logcatactivity manager service重新启动应用时,通常会在正常日志和/或事件日志中发生一些喋喋不休

(logcat -b events).
  

更多信息:

如果您看到ActivityManagerService.finishForceStopPackageLocked()方法的代码,则此方法会使用操作Intent.ACTION_PACKAGE_RESTARTED触发Intent。

从各种方法调用它,如:
ActivityManagerService.forceStopPackage()
IPackageDataObserveronRemoveCompleted.onRemoveCompleted()

所以内部有一个PackageDataObserver ActivityManagerServiceIntent.ACTION_PACKAGE_RESTARTED中实现,如果有任何包被删除,则会观察,如果需要重新启动,则会触发一个意图行动ActivityManagerService.forceStopPackage()

使用{{1}}强制关闭每个包,它知道要重启的包。

希望它能够消除疑虑。