我怎么知道如果我的闹钟管理器定时器是在



我使用以下代码(来自我的activity)在应用程序中启动一个周期计时器:

Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),(i * 1000), pendingIntent);
Toast.makeText(this, "Alarm set in " + i + " seconds",
Toast.LENGTH_SHORT).show();

我想知道我怎么能知道(从不同的活动)是定时器正在运行?

我能想到的一种可能性是检查挂起的Intent是否被定义。

你可以调用

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_NO_CREATE);

这将给你一个挂起的意图,如果没有指定意图,则为空。这并不能保证警报已经设置,但这是一种检查设置警报代码之前是否被调用的简单方法。

另一种可能性是将所有设置的警报保存在SharedPreferences文件中。通过这种方式,您可以在共享的prefs文件中查找应用程序设置的所有警报。

据我所知,没有办法从AlarmManager

中获得应用程序的设置警报列表

in stop function

Intent intent = new Intent(this, LocaitonSampleBroadcaseReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast( this.getApplicationContext(), 234324243, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.cancel(pendingIntent);

就加上这个:

pendingIntent.cancel();

所以你可以使用字符串写的注释Janusz

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_NO_CREATE);

最新更新