2 znl 12 znl_12 于 2013.06.06 15:40 提问

Broadcast service 没有被调用

我使用下面的代码调用 Broadcast service

Intent i = new Intent(this, BootUpReceiverRecall.class);
        sendBroadcast(i);
 <receiver  android:process=":remote" android:name="BootUpReceiverRecall"></receiver>
public class BootUpReceiverRecall extends BroadcastReceiver 
{
      // Restart service every 30 seconds
      private static final long REPEAT_TIME = 1000 * 30;
      @Override
      public void onReceive(Context context, Intent intent) 
      {
        AlarmManager service = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(context, BootUpReceiver.class);
        PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
            PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar cal = Calendar.getInstance();
        // Start 30 seconds after boot completed
        cal.add(Calendar.SECOND, 30);
        //
        // Fetch every 30 seconds
        // InexactRepeating allows Android to optimize the energy consumption
        service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), REPEAT_TIME, pending);
        // service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
        // REPEAT_TIME, pending);
      }

但是我的BootUpReceiver 从来没有被调用,哪里出错了呢?

2个回答

cj6585256
cj6585256   2013.06.06 16:00
已采纳
Intent i = new Intent(this, BootUpReceiverRecall.class);
        sendBroadcast(i);

为什么要这样写呢? 我是没这样写过
广播分2中注册方式:
1中是代码注册,局部广播 可以写在Activity中

YourReceiver reveiver = new YourReceiver ();
IntentFilter filter = new IntentFilter();
        filter.addAction("yourAction");
        registerReceiver(reveiver , filter);

Activity生命周期中可以管理register 和 unregister
2.manifest配置 节点下
创建 YourReceiver在xx.xx.xx.receiver(随便写)包下 extends BrocastReceiver
根据action过滤

你这个可改成

Intent i = new Intent(“action”);
        sendBroadcast(i);
curie_87
curie_87   2013.06.06 17:07

要在 AndroidManifest.xml 中定义:

<receiver 
android:process=":remote"
android:name=".BootUpReceiverRecall" />

还要查看 "android:name" tag。
如果在程序的同一个包中的话,要在 "BootUpReceiverRecall" 前面添加一个"."。但是不能这样使用 "app.package.receivers.BootUpReceiverRecall".

Csdn user default icon
上传中...
上传图片
插入图片