CommonswareWakefulIntentServicejarファイルをプロジェクトに実装しました。
次のように新しいアラームを設定しました。
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
// Get the AlarmManager service
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// CONSTANT.ALARM_TIME is set to 300000
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+CONSTANT.ALARM_TIME, CONSTANT.ALARM_TIME, pi);
ブロードキャストレシーバーを次のように設定します。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.commonsware.cwac.wakeful.WakefulIntentService;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
WakefulIntentService.sendWakefulWork(context, AlarmService.class);
}
}
この設定をデバッグしました。AlarmReceiverクラスにブレークポイントを設定すると、起動します。
ただし、doWakeFulWorkのブレークポイントであり、そこに到達することはありません。
import com.commonsware.cwac.wakeful.WakefulIntentService;
public class AlarmService extends WakefulIntentService implements OFDelegate {
private MMApp myApp;
private Account _currentAccount;
private ArrayList<Thread> _threads;
private static final String SHOW_TIME_FORMAT = "h:mma";
private final static String CLASS_NAME = AlarmService.class.getName();
public AlarmService() {
super("AlarmService");
}
@Override
protected void doWakefulWork(Intent intent) {
私は何を間違えましたか?