Ang*_*elo 5 android process android-service
我通过反编译检查了在某些应用程序的清单中,服务不是通过单独的进程启动的.顺便说一句,在任务管理器中,它显示为"正在运行".
例如,在Android 4.4.2上,Facebook有0个进程和2个服务正在运行.从文档中(如果我错了,请纠正我)我已经明白服务在其应用程序的相同过程中运行.如果进程终止,则服务停止(并且可以由AlarmManager或START_STICKY自动重新启动).
因此,如果它没有在一个单独的进程内启动,那么至少应该有一个服务可以运行的进程.那么,即使没有进程,服务是否可能运行?我再说一遍,服务(来自清单)没有GOT指令android:background
编辑1: 这似乎是Android 4.4.2的一个错误.看到这个和这个.在我的情况下,当我从列表中滑动应用程序时遇到问题(如第二个链接中所述)
编辑2: 如果我错了,请纠正我,这是我所理解的.
一个Service对象首次创建时startService()被调用.onCreate()将在该Service对象上调用onStartCommand()并将跟随.从现在开始:
stopSelf()
未调用)但它没有运行.START_STICKY(和其他重启常量)或手动调用startService().当服务从系统中终止时,将再次调用onCreate.现在,这是Android <4.4.2上的正常行为.在KitKat上,如果从LRU列表中滑动应用程序,则进程会死亡,即使使用START_STICKY,它也不会自动重新启动.解决方法是AlarmManager.这是对的吗?
您的服务是您的应用程序的一部分。根据定义,当服务运行时,您的应用程序也在运行。例如,当 AlarmManager 在预定时间调用您的服务时,Android 首先为应用程序启动一个进程(如果它尚未运行),然后在当前运行的应用程序中调用您的服务。
一般来说,你是对的:如果应用程序(进程)死亡,服务也会随之死亡。
Android 支持 Manifest 属性,android:process它允许您指定应用程序的特定组件应在单独的进程中运行。本质上,这会在多个进程中运行应用程序的多个相同副本。Android 只是使用其中一个进程来运行一个组件,并使用另一个进程来运行另一个组件。您的应用程序在两者中运行。
混乱的根源在于“设置”>“应用程序”页面使用“进程”和“服务”一词的方式。它似乎使用前者来计算具有 UI 组件的进程,而后者来计算所有其他进程。如果您使用 adb 连接到您的设备并使用“ps”命令,您将得到更好地反映这些单词的共同理解的内容。
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |