我有一个Service
,当新的来电到达时,它从BroadcastReceiver
开始。在那Service
我开始一个新的Thread
并在那里完成所有的工作。如果我的应用程序的Main Activity
被杀,会发生什么?我问,因为我意识到在这种情况下Service
的{{1}}会上升一个!就像再次调用startID
的{{1}}或类似的东西一样。我举一个简短的例子:
Service
正在后台运行,来电已到,onStartCommand()
启动,Main Activity
被用户操作调用,Service
被销毁。stopSelf()
正在运行,来电已到,Service
启动,Main Activity
被清除最近的应用列表,Service
被用户操作调用{{1}因为Main Activity
不匹配而未被销毁。stopSelf()
未运行(通过清除最近的应用列表终止),来电到达,Service
启动,startID
被用户操作调用,Main Activity
被销毁这很奇怪,因为Service
在stopSelf()
被杀时会以某种方式改变其值。我在Service
的{{1}}方法中使用startID
,因此无法使用新的Main Activity
重新创建START_NOT_STICKY
。有人可以向我解释一下吗?当Service
被杀时,onStartCommand()
或服务运行的单独Service
会发生什么?提前谢谢!
答案 0 :(得分:1)
从“最近”中删除活动并不会导致死亡。如果来电广播导致“startService”呼叫,则将再次调用服务的“onStartCommand”而不会出现问题(Android onCreate or onStartCommand for starting service)。
因此,在#2中,您可能认为您的活动“已经死亡”,但事实并非如此,并且由于每次调用onStartCommand时startId都会更改,因此启动该服务的下一个请求将不会与之前的任何startId匹配。这是预期的行为。