android– 使用AlarmManager重新安排IntentService– 忽略意图额外信息

android– 使用AlarmManager重新安排IntentService– 忽略意图额外信息,第1张

概述我有一个IntentService,最初是通过点击按钮启动的:Intentintent=newIntent(this,ProximityService.class);intent.putExtra("com.hybris.proxi.triggerTime",5000l);PendingIntentpendingIntent=PendingIntent.getService(this,0,intent,

我有一个IntentService,最初是通过点击按钮启动的:

        Intent intent = new Intent(this, ProximityService.class);        intent.putExtra("com.hybris.proxi.triggerTime", 5000l);        PendingIntent pendingIntent = PendingIntent.getService(this,  0,  intent, 0);        long trigger = System.currentTimeMillis() + (5*1000);        alarmManager.set(AlarmManager.RTC_WAKEUP, trigger, pendingIntent);

这很好用.但后来我试图从intentservice中再次执行相同的intentservice.这里的想法是我可以改变下一个执行时间以节省电池.

@OverrIDeprotected voID onHandleIntent(Intent intent) {    Log.d("demo", "ProximityService... STARTING");    Log.d("demo", "Intent has extra with key com.hybris.proxi.triggerTime" + intent.hasExtra("com.hybris.proxi.triggerTime"));    long lastTriggerTime = intent.getLongExtra("com.hybris.proxi.triggerTime", -1);    Log.d("demo", "Last trigger time: " + lastTriggerTime);    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);    //trigger me again - Todo change this based on closeness to store    //Todo does not work, somehow triggertime is not incremented    if (lastTriggerTime < 50000)    {        long newTriggerTime = lastTriggerTime * 2;        Intent serviceIntent = new Intent(this, ProximityService.class);        serviceIntent.putExtra("com.hybris.proxi.triggerTime", (long)newTriggerTime);        Log.d("demo","New triggerTime set in new intent is : " + serviceIntent.getLongExtra("com.hybris.proxi.triggerTime", -1));        PendingIntent pendingIntent = PendingIntent.getService(this,  0,  serviceIntent, 0);        long trigger = System.currentTimeMillis() + newTriggerTime;        alarmManager.set(AlarmManager.RTC_WAKEUP, trigger, pendingIntent);        Log.d("demo", "Alarm was set with trigger time " + newTriggerTime);    }     else {        Log.d("demo", "Not rescheduling alarm: lastTriggerTime is " + lastTriggerTime);    }    Log.d("demo", "ProximityService... DONE");}

问题是

intent.getLongExtra(“com.hybris.proxi.triggerTime”, – 1);

始终返回初始值5000 – 因此下一个警报不会在紧急触发时间内安排.不知何故,为新的触发时间设置额外的意图不起作用……

有任何想法吗?

解决方法:

您需要使用PendingIntent.FLAG_UPDATE_CURRENT

从中更改您的代码
PendingIntent pendingIntent = PendingIntent.getService(this,0,serviceIntent,0);
 至

PendingIntent pendingIntent = PendingIntent.getService(this,                        0,  serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
总结

以上是内存溢出为你收集整理的android – 使用AlarmManager重新安排IntentService – 忽略意图额外信息全部内容,希望文章能够帮你解决android – 使用AlarmManager重新安排IntentService – 忽略意图额外信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115997.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存