android-无法停止使用alarmManager启动的服务

android-无法停止使用alarmManager启动的服务,第1张

概述我在取消警报和启动服务时遇到问题.我将警报设置为活动:publicclassAlarmStarterextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);IntentlocationPollerIntent=newIntent

我在取消警报和启动服务时遇到问题.

我将警报设置为活动:

public class AlarmStarter extends Activity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      Intent locationPollerIntent = new Intent(this, LocationPoller.class);           PendingIntent pendingIntent = PendingIntent.getbroadcast                (getApplicationContext(), REQUEST_CODE, locationPollerIntent, 0);      alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);      alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,                             SystemClock.elapsedRealtime(), 6000, pendingIntent);    }}

LocationPoller意图将启动服务以获取设备的位置.
因此,我使用alarmManager以一定频率重复此搜索.

之后,当我在broadcastReceiver上获得位置时,我调用另一个Activity来显示位置并发出通知.

目前,我想停止搜索位置.
因此,我尝试取消alarmManager.

public class NotifIEr extends Activity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.alarm_notifIEr);        findVIEwByID(R.ID.btTurnOffAlarm).                               setonClickListener(new VIEw.OnClickListener() {            public voID onClick(VIEw v) {                Intent intentToStop = new Intent(this, LocationPoller.class);                PendingIntent pendingIntentToStop = PendingIntent.getbroadcast                        (getApplicationContext(), REQUEST_CODE, intentToStop, 0);                AlarmManager alarmManager = (AlarmManager)                                getSystemService(ALARM_SERVICE);                alarmManager.cancel(pendingIntentToStop);            }        });    }}

但这不起作用,它将继续搜索位置.

有什么线索吗?

谢谢.

解决方法:

您必须使意图独特.

类似于:

locationPollerIntent.setData((Uri.parse("YOUR UNIQUE ID FOR THIS INTENT")));

当为您找回正确的警报时,AlarmManager将检查意图的数据字段.
只需为意图数据设置唯一的Uri.

因此,当您收到警报时,请执行以下 *** 作:

intentToStop.setData((Uri.parse("YOUR SAME UNIQUE ID FOR THIS INTENT")));

之后应取消警报.

总结

以上是内存溢出为你收集整理的android-无法停止使用alarmManager启动的服务全部内容,希望文章能够帮你解决android-无法停止使用alarmManager启动的服务所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1084531.html

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

发表评论

登录后才能评论

评论列表(0条)

保存