Android 如何在其他活动中停止 AlarmManager

3
我正在使用一个服务,它在由AlarmManager重复创建的Activity 'A'中被调用。我的服务会重复检查来自服务器的响应,当响应为true时,新的Activity B将启动。现在,当Activity B启动时,我想停止服务以及AlarmManager。我该如何做到这一点?
以下是我调用服务的'A' Activity代码:
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 40);

    Intent intent = new Intent(this, response.class);

    // Add extras to the bundle
    intent.putExtra("foo", "bar");
    // Start the service
    // startService(intent);

    pintent = PendingIntent.getService(this, 0, intent, 0);

    alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    int i;
    i = 15;
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            i * 1000, pintent);

    startService(intent);

我也尝试在Activity 'B'中使用这段代码片段停止AlarmManager,但失败了。
      Intent sintent = new Intent(this, response.class);
     pintent = PendingIntent.getService(this, 0, sintent, 0);
     alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
     stopService(sintent);
     alarm.cancel(pintent);
1个回答

2
在活动B中,您应该使用与在活动A中创建的上下文相同的sIntent。因此,在活动A中,我会添加以下内容:
private static Context context;

public static Context getAppContext(){
    return ActivityA.context;
}

在Activity A的onCreate()方法内,初始化上下文

context=getApplicationContext();

在 Activity B 中创建以下 sIntent:
Intent intent = new Intent(ActivityA.getAppContext(), ServiceClass.class);
intent.putExtra("fsasf", "bar");
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
stopService(intent);
alarm.cancel(pintent);

我无法理解你的意思,创建一个与Activity A中创建的上下文相同的Sintent。 - user3820207
@Álvaro Pérez Soria, 这行代码是什么意思? - "所以我会添加这个 Activity" - VVB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接