当launchMode打开时,AlarmManager不在睡眠模式下工作

时间:2014-08-12 03:15:50

标签: android android-activity alarmmanager sleep wakeup

我有一个活动A,我必须通过AlarmManager再次调用活动A.电话进入睡眠状态后30分钟后由告警管理员唤醒。代码如下:

public void wakeup(){
    Intent i = new Intent(mcontext, activity_form.class);
    PendingIntent operation = PendingIntent.getActivity(mcontext, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.MINUTE, 30);
    AlarmManager am =  (AlarmManager)mcontext.getSystemService(Activity.ALARM_SERVICE);    
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), operation);
} 
public void sleep(){
    pm = (PowerManager)mcontext.getSystemService(Context.POWER_SERVICE);
    pm.goToSleep(SystemClock.uptimeMillis());   
}

但是,我不想再次创建活动A,所以我希望我的活动是单身,我在我的Manifest.xml中添加它

android:launchMode="singleInstance" 
or
android:launchMode="singleTask"
30分钟后,我在logcat看到唤醒电话,但电话没有唤醒。如果我删除android:launchMode,它没关系并成功唤醒。但是,我将再次创建活动A. A - >设置闹钟 - >睡觉 - >醒来 - > '但我的希望是A - >设置闹钟 - >睡觉 - >醒来 - >一个
我对此一无所知,非常感谢你。

1 个答案:

答案 0 :(得分:0)

如果您想通过活动唤醒手机,则需要使用WakeLock。您可以找到实施here

需要<uses-permission android:name="android.permission.WAKE_LOCK" />