广播接收器不工作:Android

广播接收器不工作:Android,android,alarmmanager,Android,Alarmmanager,我正在为BroadcastReceiver实现一个示例代码,它将从一个特定的时间开始,但我的代码中存在一些问题,并且无法正常工作 这是我的密码: 在活动中: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Calendar cur_cal = new Gregor

我正在为BroadcastReceiver实现一个示例代码,它将从一个特定的时间开始,但我的代码中存在一些问题,并且无法正常工作

这是我的密码:

在活动中:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Calendar cur_cal = new GregorianCalendar(TimeZone.getTimeZone("IST"), Locale.US);
        cur_cal.setTimeInMillis(System.currentTimeMillis());

        Calendar cal = new GregorianCalendar();
        cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
        cal.add(Calendar.HOUR_OF_DAY, 13);
        cal.add(Calendar.MINUTE, 10);
        cal.add(Calendar.SECOND, 00);
        cal.add(Calendar.MILLISECOND, 0);
        cal.add(Calendar.DATE, 31);
        cal.add(Calendar.MONTH, 10);

        Intent intent = new Intent(HelloAlarmManagerActivity.this, ScheduleHandler.class);
        PendingIntent pIntent = PendingIntent.getBroadcast(HelloAlarmManagerActivity.this, 0, intent, 0);

        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 2*10, pIntent);
        Toast.makeText(HelloAlarmManagerActivity.this, "Alarm seted", Toast.LENGTH_SHORT).show();

    }
我的Brodcastereceiver课程如下:

public class ScheduleHandler extends BroadcastReceiver {

    /* (non-Javadoc)
     * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
     */
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Alarm called", Toast.LENGTH_SHORT).show();
    }


}
运行此应用程序后,我只收到第一条toast消息。这意味着广播接收器不会被呼叫


我的代码中有问题吗?

看起来重复间隔是20(2*10)毫秒。我不知道手机会对此做出什么反应,但这可能是您的问题的原因

只是一个想法:如果您呼叫cal.add(Calendar.Month,10),是否会将10个月添加到现在?尝试确定cal.getTimeInMillis的值。您也可以尝试alarm.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis+1000,2*10,pIntent);看看这是不是一个简单的时机mistake@RafaelT cal.add(Calendar.Month,10)这是否意味着我将从现在开始添加10个月?哦,我想应该是10月的,然后我加了10(10月的)。。。。那么,本月应该做什么?