Android AlarmManager可以在其他应用程序中接收
我想每十分钟运行一次任务,我使用了Android AlarmManager可以在其他应用程序中接收,android,alarmmanager,Android,Alarmmanager,我想每十分钟运行一次任务,我使用了AlarmManager如下所示: public static void startAlarmOnce(Context context, String action, long triggerAtMillis) { Intent intent = new Intent(action); PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);
AlarmManager
如下所示:
public static void startAlarmOnce(Context context, String action, long triggerAtMillis) {
Intent intent = new Intent(action);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}
但是,有一个问题:如果注册了BroadcastReceiver的人使用相同的操作,那么他可以接收广播
那么,如何像LocalBroadcast那样在我自己的应用程序中保持广播?使用:
其中,
YourBroadcastReceiver.class
应该是您作为BroadcastReceiver实现的类的名称。这里我不能给出具体的YourBroadcastReceiver
。它是在我的BaseActivity
中定义的。如果我写BaseActivity.MyBroadcastReceiver.class
,接收者什么都接收不到。只需用static
关键字声明内部类,如下所示:static class YourBroadcastReceiver{…}
我试过了。但是方法onReceive(Context-Context,Intent-Intent)
从未执行过
public static void startAlarmOnce(Context context, String action, long triggerAtMillis) {
Intent intent = new Intent(context, YourBroadcastReceiver.class);
intent.setAction(action);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}