onReceive()方法在设备处于睡眠模式时没有打开应用程序..?

时间:2013-01-15 06:35:43

标签: android broadcastreceiver alarmmanager android-alarms android-broadcast

朋友们,我有问题... 实际上我使用此代码在一定时间内打开我的应用程序..应用程序工作正常,但当设备处于睡眠模式不工作.. ??

public class MyBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context ctx, Intent intent) {
        Intent intent = new Intent(ctx, ActivityMain.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        ctx.startActivity(intent);
    }

}

ActivityMain.java

intent = new Intent(getBaseContext(),MyBroadCastReceiver.class);

        pendingIntent = PendingIntent.getBroadcast(
                getBaseContext(), REQ_CODE, intent, 0);

        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (60 * 1000), pendingIntent);

在设备睡眠模式不起作用时,BroadCastReceiver Calss无法打开MainActivity类。

我已经允许使用清单

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

请帮助。

1 个答案:

答案 0 :(得分:1)

广播接收器的唤醒锁定仅保证在onReceive方法的持续时间内使手机保持唤醒状态。如果您需要在该方法之外进行工作,则需要获取/管理另一个唤醒锁定。

为此目的存在Commonsware库。看看:https://github.com/commonsguy/cwac-wakeful/blob/master/README.markdown