Android服务出现故障时如何发送广播?

时间:2015-09-30 10:01:48

标签: android android-broadcast

我想在服务停止时发布广播。当发生这种情况时,保证会运行什么回调?我希望其他应用程序知道它的失败,我不能抓住机会它会失败,没有人知道它。那么,在服务生命周期(哪种方法)中我应该发出sendBroadcast(ImGoingDown)?例如,onDestroy()多久会被调用?

3 个答案:

答案 0 :(得分:1)

虽然这里的大多数答案都有助于onDestroy方法,但是您的服务上有许多事件被销毁,您无法进行干预。例如,如果用户强制关闭了您的应用程序,您的服务将被销毁,但不会执行onDestroy。

在一个常见的场景中,当您的服务已经用尽运行时(大多数已知完成),没有其他进程绑定到服务或执行其stopSelf()时,您的服务将被销毁,并且最常见的,当设备在RAM上运行不足时。

onDestroy将是您可以重新启动它的场景。

作为建议,如果设备由于RAM较低而导致进程中断,请不要立即重启。设置一个Handler或AlarmManager稍后启动它(因此缺少memmomry不会再次执行。)

答案 1 :(得分:0)

您可以在onDestroy()中触发广播。这是服务在被销毁之前收到的最后一次调用。服务生命周期以此调用结束。

答案 2 :(得分:0)

如果您运行的后台服务意味着您必须在后台执行某项操作,则从onDestroy() 发送广播可能不是最佳做法

请注意,您的服务因为您要运行的任务已完成而被销毁,那么您可能不希望在这种情况下发送广播。你想只在服务被杀的时候发送广播吗?因此,更好的方法是设置boolean,例如isTaskFinised,如果只返回false,则onDestroy()应发送广播。

@Override
public void onDestroy(){
    if(!isTaskFinished){
        //send a broadcast
    }
}