デバイスが起動している間に物事を行うための非常に単純なアラームマネージャーがあります。だから私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で出力が何であるかを知ることができました。
みんなありがとう、私は本当に困惑しています。