即使设备正在睡眠,AlarmManager.RTC也会运行

时间:2014-03-27 10:24:32

标签: android

设备未插入电缆进行充电 设备在15秒不活动后设置为休眠

奇怪的结果是当我将我设置为60时振动器每60秒运行一次 这是我的警报代码。

public void startAlert(View view) {
        EditText text = (EditText) findViewById(R.id.time);
        int i = Integer.parseInt(text.getText().toString());
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), i*1000, pendingIntent);

        Toast.makeText(this, "Alarm set in " + i + " seconds",
                Toast.LENGTH_LONG).show();
    }

BroadcastReceiver

public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Time is up!!!!.",
                Toast.LENGTH_LONG).show();
        // Vibrate the mobile phone
        Vibrator vibrator = (Vibrator) context
                .getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(1000);
    }

1 个答案:

答案 0 :(得分:5)

你很困惑"睡觉"屏幕关闭。您无法告诉设备何时进入深度睡眠模式。

只要处理器处于活动状态,RTC就可以正常工作。如果设备进入休眠状态(闲置10-30分钟后,视设备而定),您需要RTC_WAKEUP

因此,在您的情况下,您可能希望在屏幕关闭时取消警报。 有关详细信息,请参阅How can I tell if the screen is on in android?

<强>更新

试一试:播放一些音乐并等待15秒。它会停止吗?不。 - &gt;设备没有睡觉。

您无法设置设备进入睡眠状态的时间,因为系统会决定。它实际上是显示睡眠&#34;。 想象一下,您正在从Play商店下载apk。如果下载停止只是因为你告诉设备“睡觉”#34; X秒后?当然不是。

菜单中的设置称为&#34;睡眠&#34;因为普通用户理解它。此设置可通过Settings.System.putInt(contentResolver, Settings.System.SCREEN_OFF_TIMEOUT, <int>)访问。