手机锁定时,我的闹钟不会启动活动

时间:2013-08-26 18:55:49

标签: android

我尝试在我的应用程序中执行闹钟,但是当手机锁定时,活动不会像标准闹钟那样启动。我能做些什么来决定这个问题?

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 5);

    Intent intent = new Intent(this, AlarmReceiverActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this,
        12345, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am = 
        (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            pendingIntent);

1 个答案:

答案 0 :(得分:2)

在这种情况下,这是“正常”行为。

要克服它,您需要获取CPU的wake_lock。

只要警报接收器的onReceive()方法正在执行,警报管理器就会保持CPU唤醒锁定。这可以保证在您完成广播处理之后手机不会睡眠。一旦onReceive()返回,Alarm Manager就会释放此唤醒锁定。 这意味着手机在某些情况下会在您的onReceive()方法完成后立即进入睡眠状态。如果您的闹钟接收器调用了Context.startService(),手机可能会先睡眠启动请求的服务。为防止这种情况发生,您的BroadcastReceiver和服务需要实施单独的唤醒锁定策略,以确保手机继续运行,直到服务可用。

来自:http://developer.android.com/reference/android/app/AlarmManager.html

类似问题:https://groups.google.com/forum/#!topic/android-developers/RAg9LJmH1oo


这就是您所需要的:http://developer.android.com/reference/android/os/PowerManager.WakeLock.html

Problem acquiring wake lock from broadcast receiver