即使没有启动,也收到BOOT_COMPLETED意图

时间:2011-03-14 19:58:01

标签: android broadcastreceiver reboot

嘿那里, 有没有人发现有时BOOT_COMPLETED意图无处不在?

我创建了一个OnBootRecoverReceiver,它在收到来自android的BOOT_COMPLETED意图后启动服务 - 到目前为止工作得很好......但是在一些(但不可追踪)事件中我收到了这样的意图,即使根本没有重启

任何人都有这方面的线索,或之前遇到过同样的问题?

接收者的清单条目:

    <receiver android:name=".trigger.OnBootRecoverReceiver">  
        <intent-filter>  
            <action android:name="android.intent.action.BOOT_COMPLETED" />  
            <category android:name="android.intent.category.HOME" />  
        </intent-filter>  
    </receiver>`  

接收人代码:

public class OnBootRecoverReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent serviceIntent = new Intent();
    serviceIntent.setAction("de.android.stuff.trigger.OnBootRecoverService");
    context.startService(serviceIntent);
}

}

如果有人有想法,请随时提供帮助。

1 个答案:

答案 0 :(得分:0)

要清除这里:在任何地方都没有创建BOOT_COMPLETED意图

由于某种原因,服务(接收器的启动)不久前在特定设备上崩溃了。我们的好朋友android ActivityManager然后决定重新制作所述服务的动画:

03-16 12:00:02.239: WARN/ActivityManager(2504): Scheduling restart of crashed service de.ukn.hci.android.diary/.trigger.OnBootRecoverService in 5000ms

当然这让我觉得Recevier再次被解雇了,但是 - 事实证明只有服务重新启动。没有任何REBOOT意图。

解决方案停止此操作: 为接收器创建的意图添加布尔额外

serviceIntent.putExtra("isFromReceiver", true);
context.startService(serviceIntent);

然后在服务的onStart(Intent)中检查此布尔值Extra

    boolean isFromReceiver = intent.getBooleanExtra("isFromReceiver", false);
    if( !isFromReceiver ) {
        return; //just stop starting the service
    }