从启动接收器调用时,AlarmManager设置方法不起作用

时间:2013-08-30 07:22:56

标签: android

我已经到处寻找这个解决方案,大多数回复要求在启动接收器中设置闹钟。

我已经实现了启动接收器并启动了服务并使用set方法设置了警报。

服务已正常启动,但未设置警报。

请帮助我坚持下去。

如果你愿意,我也可以发布一些但是启动接收器工作正常,因为我也在那个

开始服务
public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    SharedPreferences sharedPref = context.getSharedPreferences(
            Util.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    long curTime = System.currentTimeMillis();
    long endTime = sharedPref.getLong(Util.END_TIME, -1);
    long startTime = sharedPref.getLong(Util.START_TIME, -1);

    if (curTime < endTime && startTime >= curTime) {
        Intent intent1 = new Intent(context, HUD.class);
        PendingIntent pintent = PendingIntent.getService(context, 1987,
                intent1, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager alarm = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, endTime, 100, pintent);
        Log.e("alaram set", endTime + " " + curTime);
    }

    Intent service = new Intent(context, HUD.class);
    context.startService(service);
}
}

MyReceiver.java

 <receiver
        android:name=".MyReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

的Manifest.xml

启动后服务已成功启动

但是alarm.setRepeating(AlarmManager.RTC_WAKEUP, endTime, 100, pintent);

警报无效。

我想我清楚我的问题。

Plz帮助

1 个答案:

答案 0 :(得分:0)

Intent intent1 = new Intent(context, HUD.class);
PendingIntent pintent = PendingIntent.getService(context, 1987,
            intent1, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarm = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 30);
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                cal.getTimeInMillis(), 100, pending);

尝试使用setInexactRepeating代替setRepeating这是性能更优化的方法。