问题描述
想要了解在Android手机上运行的一些进程启动的原因。已知有两种常见情况会启动进程:
1. 用户/其他程序直接启动它(例如,点击应用程序图标,或者其他进程显式启动.apk文件)。
2. 应用程序注册了一个Intent,并且与该Intent关联的事件发生时启动。
用户想知道,除了Intent或直接启动之外,Android中是否还有其他原因/机制会导致进程启动。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
在Android中,除了上述的启动方式外,还有一些其他机制可以启动应用程序或服务。
通过类Unix机制创建原生进程:
像任何常规的类Unix机制一样,Android中的原生进程可以通过诸如crontab条目、进程调度程序重新启动最近死掉的进程等方式创建。例如,可以使用普通应用程序创建一个非特权的crond,或者获取root权限并安装一个真正的crond。此外,Android框架也会重新启动它认为不应该死掉的进程。在进程创建方面几乎没有什么限制;安全性更多地体现在很难以能够使用共享资源的用户ID启动进程。手动使用app_process启动虚拟机:
虽然Android活动或服务通常是由zygote分叉(响应Intent),但我认为还有一种鲜为人知的方法可以使用app_process手动启动虚拟机。后台服务被提前终止:
在某些情况下,后台服务由于前台应用程序需要更多内存而被提前终止,Android可能会稍后重新启动服务以完成操作。
方案2
另外,用户还可以使用Autostarts应用程序来查看所有不同的系统事件以及注册了这些事件的应用程序。这可以帮助用户了解更多关于应用程序启动的情况。
请注意,这些机制可能会因Android版本而异,并且一些操作可能需要root权限。建议在执行任何更改之前仔细研究和备份设备数据。
以上是Android中启动应用/服务的一些可能原因和机制。