0

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) {

私は何を間違えましたか?

4

1 に答える 1

0

@Commonswareは正しかった。マニフェストにエントリがありましたが、タイプミスがありました。そのタイプミスを修正すると、doWakefulWorkが正しく呼び出されました。@Commonswareの助けと素晴らしいライブラリに感謝します。強くお勧めします!

于 2012-11-24T14:55:32.037 に答える