AlarmManager
画面がオフのときにブロードキャストを送信するためにを使用しています。これはほとんどのデバイスで問題なく動作しますが、一部のデバイス (Samsung Galaxy S4 など) では、ブロードキャストが受信されるまで、指定された 20 秒ではなく、30 秒、40 秒、または 120 秒かかることもあります。これが発生しているデバイスにアクセスできないため、logcat を確認できません。
これは私が設定している方法ですAlarmManager
:
AlarmManager mAlarmManager=(AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
long mInterval = 20 * 1000;
Intent i = new Intent();
i.setAction(MY_ACTION);
mPendingIntent = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + mInterval, mPendingIntent);
そして、これはマニフェストに登録された受信者です:
private class MyIntentReceiver extends BroadcastReceiver {
private static final String TAG = "MyIntentReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MY_ACTION)) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
Log.e(TAG, "onReceive");
//Carry out my action...
wl.release();
}
}
}