我正在使用AlarmManager定期检查某个端点上的新内容,验证来自端点的结果是否与我在我的应用上已有的结果相同,如果不相同,则为每个项目创建通知
我需要知道的是,如何在应用程序暂停或停止时启动警报,并在应用程序启动或恢复时取消警报。
我应该在哪里开始闹钟以及我应该在哪里取消闹钟?
在Android通知指南中,它说(在章节: 何时不显示通知 ):
如果相关的新信息当前在屏幕上,请不要创建通知。相反,使用应用程序本身的UI直接在上下文中通知用户新信息。例如,聊天应用程序不应在用户主动与其他用户聊天时创建系统通知。
如果我打开了应用程序,我只想禁用闹钟,当应用程序关闭/暂停时,我想取消所有内容。
答案 0 :(得分:3)
您可以尝试使用服务并覆盖其中的onTrimMemory方法,并在" level"时显示通知。等于TRIM_MEMORY_UI_HIDDEN
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
switch (level) {
case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
break;
}
}
查看文档以获取更多信息 http://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_UI_HIDDEN
答案 1 :(得分:3)
您需要创建一个具有全局状态的Custom Application
,并在应用级别实施您自己的onPause
和onResume
。
像这样创建自己的Application子类:
public class MyApplication extends Application {
private static MyApplication sInstance;
public MyApplication getInstance(){
return sInstance;
}
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
public void onStart() {
// TODO: Stop your notification.
}
public void onStop() {
// TODO: Start your notification.
}
}
在AndroidManifest.xml标签中指定其名称:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name="MyApplication">
创建一个类来保存活动计数:
public class ActiveActivitiesTracker {
private static int sActiveActivities = 0;
public static void activityStarted()
{
if (sActiveActivities == 0) {
// TODO: Here is presumably "application level" resume
MyApplication.getInstance().onStart();
}
sActiveActivities++;
}
public static void activityStopped()
{
sActiveActivities--;
if (sActiveActivities == 0) {
// TODO: Here is presumably "application level" pause
MyApplication.getInstance().onStop();
}
}
}
然后创建基本活动(或在每项活动中执行此操作),只需调用activityStarted()
和activityStopped()
方法:
@Override
public void onStart() {
super.onStart();
ActiveActivitiesTracker.activityStarted();
}
@Override
public void onStop() {
super.onStop();
ActiveActivitiesTracker.activityStopped();
}
有关自定义应用程序的更多详细信息,请参阅this。
有关Android应用程序级别暂停和恢复的更多详细信息,请参阅this。
希望这有帮助。
答案 2 :(得分:0)
我不确定这在您的项目中是否可行,或者它是否会实现您的希望,但是您可以从一个基本活动扩展您的所有活动。在该基本活动的onPause / onStop / onDestroy方法中启动警报,并且基础活动onCreate / onStart方法取消具有待定意图的警报。
如果您有多个应用可能关闭的活动,这将为您提供一个设置位置,您可以从中处理警报。
您可以详细了解活动的生命周期here。