docsの後、私はAlarmManagerを使用してアラームを設定しましたが、これは電話の画面をオフにしないとうまく動作します。AlarmManager:画面をオフにしたときに保留中のインテントが削除されました
これは、画面が上にあるadb shell dumpsys alarm
の出力です:
Batch{1304da7 num=1 start=190708622 end=190708622 flgs=0x1}:
RTC_WAKEUP #0: Alarm{f642254 type 0 when 1480059825231 alarm.poc.app}
tag=*walarm*:alarm.poc.app.ACTION
type=0 whenElapsed=+5m49s424ms when=2016-11-25 02:43:45
window=0 repeatInterval=0 count=0 flags=0x1
operation=PendingIntent{f78d3a6: PendingIntentRecord{f52e1e7 alarm.poc.app broadcastIntent}}
秒のカップル私は私のアラームをオフ画面をオンにした後、コマンド出力から消え、呼び出されることは決してありません(それはスクリーンで動作しますに)。生きているアラームを維持するために行う、他にどのようなアプリを
- :
は、だから私は、これらの質問がありますか?
adb shell dumpsys alarm
の出力で、最近のすべてのアプリを消去しても、他のアラームが削除されていないことがわかります。私はWhatsapp、Google、そして他の多くのランダムなアプリのアラームを見ることができます。 - これらのアプリはすべてフォアグラウンドサービスを持っていますか? 5秒ごとにログに何かを書き込む厄介なフォアグラウンドサービスを作成して問題を「回避する」ことができたので、私はこれを尋ねます。実行中のサービスが問題を防止するように見えるが、それは完全に醜いので、プロセッサを常に目を覚ますようにするのは良い考えではないと思う。
これは私のセットアップアラーム方法です:
public void onReceive(Context context, Intent receivedIntent) {
if (MY_ACTION.equals(receivedIntent.getAction())) {
System.out.println("good!!!");
String text = receivedIntent.getStringExtra("text");
Intent intentService = new Intent(context, TestService.class);
intentService.putExtra("text", text);
startWakefulService(context, intentService);
System.out.println("service started");
}
}
とマニフェスト:
...
<uses-permission android:name="android.permission.WAKE_LOCK"/>
...
<service android:name="alarm.poc.app.TestService"
android:exported="false"/>
<receiver android:name="alarm.poc.app.AlarmReceiver"
android:process=":remote">
<intent-filter>
<action android:name="alarm.poc.app.ACTION"/>
</intent-filter>
</receiver>
...
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(AlarmReceiver.MY_ACTION);
intent.putExtra("text", editText.getText().toString());
PendingIntent pending = PendingIntent.getBroadcast(this, 42,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// also tried with getBroadcast(this, 0, intent, 0)
manager.setExact(AlarmManager.RTC_WAKEUP, millis, pending);
は私が持っている(画面オフの状態で呼び出されていない)WakefulBroadcastReceiver
私はmarshmallow電話、minSdkVersion 19とtargetSdkVeでテストしていますrsion 24