我正在使用一个在AlarmManager重复创建的Activity'A'中调用的服务。我的服务是反复检查服务器的响应,当响应为真时,启动新的活动B.现在,当活动B启动时,我想要停止服务以及AlarmManager。我怎么能这样做?
我的'A'呼叫服务活动代码如下
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);
答案 0 :(得分:2)
在活动B中,您应该使用与在活动A中创建的上下文相同的上下文创建sIntent。
所以在活动A中我会添加这个
private static Context context;
public static Context getAppContext(){
return ActivityA.context;
}
和Activity A的onCreate()方法,初始化上下文
context=getApplicationContext();
在活动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);