0

デバイスが起動している間に物事を行うための非常に単純なアラームマネージャーがあります。だから私AlarmManager.RTCは私の最善のアプローチだと考えました。AlarmManager APIによると、デバイスは、デバイスがウェイクアップするまで次に発生するアラームを無視することになっているため、保留中のインテント命令を送信します。

アラームをスケジュールしたコードは次のとおりです。

Intent intent = new Intent(getApplicationContext(), WorkerService.class);
            PendingIntent pIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
            am.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 10000, pIntent);

そして、これが「WorkerService.class」内のコードです

    public void onCreate() {
    super.onCreate();

    stopSelf();

}

public void onDestroy() {
    super.onDestroy();
    Log.i("Service Status", "Service exited");
}

ここで何が間違っていますか?

これで、スクリーンレシーバーを作成できることがわかりましたが、スクリーンがオフのときにアラームマネージャーがアラームを無視するはずの場合、そのレシーバーを保持するために別のサービスを開く必要があります (ちょっと面倒です)。

サービスが実行さLog.iれているかどうかを通知していました。デバイスがスリープ状態になるようにADB Over WiFiを使用することで、Eclipseのlogcatで出力が何であるかを知ることができました。

みんなありがとう、私は本当に困惑しています。

4

0 に答える 0