1

私のアプリでBroadcastReceiverは、によって呼び出される がありAlarmManagerます。CommonsWareBroadcastReceiverWakefulIntentservice.

私は自分の電話でこれをテストしましたBroadcastReceiver。私はそれが何であるかについて本当に混乱しています。私の BroadcastReceiver と WakefulIntentservice はマニフェストに登録されています。

これは私のコードです:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 2);

Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), savedIntervalAutomaticMilisInt, pendingIntent);

Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show();

finish();

アラーム受信者:

package com.something.app;

import com.commonsware.cwac.wakeful.WakefulIntentService;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, AlarmService.class);
        WakefulIntentService.sendWakefulWork(context, i);
    }
}

そして AlarmService:

package com.something.app;

import android.app.PendingIntent;
import android.content.Intent;
import com.commonsware.cwac.wakeful.WakefulIntentService;

public class AlarmService extends WakefulIntentService {

    public AlarmService() {
        super("AlarmService");
    }

    @Override
    protected void doWakefulWork(Intent arg0) {
        //A looooooooot of stuff
    }

BroadcastReceiver時々呼び出されない理由を誰かが知っていますか?

BroadcastReceiver編集:を受け取るa の設定について聞きましたonBootCompleted。それは必要ですか?

4

1 に答える 1

1

それが問題です。デバイスが再起動すると、アラームがクリアされることがあるので、BroadcastReceiver受信したアラームでアラームをリセットする必要がありますonBootCompleted

于 2012-11-06T18:47:10.423 に答える