我AlarmManager
在屏幕关闭时使用发送广播。这在大多数设备上都可以正常工作,但在某些设备(例如三星 Galaxy S4)上,接收到广播需要 30、40 甚至 120 秒,而不是指定的 20 秒。我无权访问发生这种情况的设备,因此无法检查 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();
}
}
}