Java 从AlarmManager启动的服务获取额外信息时的默认值
我正在安排一个报警管理器,如下所示:Java 从AlarmManager启动的服务获取额外信息时的默认值,java,android,android-intent,alarmmanager,Java,Android,Android Intent,Alarmmanager,我正在安排一个报警管理器,如下所示: Intent myIntent = new Intent(context, Locale.class); intent.putExtra("end",AlarmEnd.getTimeInMillis()); PendingIntent pendingIntent = PendingIntent.getService(context, 0, myIntent, PendingIntent.FLAG_CANCEL
Intent myIntent = new Intent(context, Locale.class);
intent.putExtra("end",AlarmEnd.getTimeInMillis());
PendingIntent pendingIntent = PendingIntent.getService(context, 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, AlarmStart.getTimeInMillis(), 40 * 1000, pendingIntent);
所以这是有效的。。。问题是它何时启动
public int onStartCommand(Intent intent, int flags, int startId) {
int t = START_STICKY;
SharedPreferences alarms = getApplicationContext().getSharedPreferences("alarms", 0);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Log.i("LocalService", "Received start id " + startId + ": " + intent);
client = new AsyncHttpClient();
endTime = intent.getLongExtra("end",0);
Log.d("Alarms", "End time is".concat(endTime.toString()));
调试消息始终输出默认值“结束时间为0”。。我知道意向书上的额外费用不是零(已检查)。我做错了什么?问题已经解决
Intent **myIntent** = new Intent(context, Locale.class);
**intent**.putExtra("end",AlarmEnd.getTimeInMillis());
问题是意图的命名,我错误地设置了意图附加项而不是“我的意图”附加项。愚蠢的我。
\u唤醒
当直接与服务一起使用时,警报不可靠。请将其与广播接收器
配合使用,或与我的WakefulIntentService
或您自己的IntentService
/WakeLock
组合使用。关于您的问题,请尝试FLAG\u UPDATE\u CURRENT
而不是FLAG\u CANCEL\u CURRENT
,看看这是否有帮助。似乎工作非常可靠。。不过,我一定会考虑它。更改为UPDATE_CURRENT没有任何效果。“似乎工作非常可靠”-它偶尔会失败,因为设备在服务有机会运行之前会重新进入睡眠状态,更不用说获取唤醒锁了。我试图切换到广播接收器。。。然而,它无法注册wifi扫描接收器。