0

我有一个活动 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' 但我希望是 A -> 设置闹钟 -> 睡眠 -> 唤醒 -> A
我对此一无所知,非常感谢。

4

1 回答 1

0

如果你想用你的活动唤醒你的手机,你需要使用WakeLock 。你可以在这里找到实现。

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

于 2014-08-12T12:09:56.783 回答