我有一个广播接收器的静态注册,用于处理清单中的短信。是否有适当的方法来确定在应用程序运行时是否调用了该接收器类上的 onReceive() 方法?
这是必需的,如果在应用程序未运行时收到短信,我可以启动一个活动,否则,只需处理信息并显示一些通知。
我有一个广播接收器的静态注册,用于处理清单中的短信。是否有适当的方法来确定在应用程序运行时是否调用了该接收器类上的 onReceive() 方法?
这是必需的,如果在应用程序未运行时收到短信,我可以启动一个活动,否则,只需处理信息并显示一些通知。
Activity.onPause()
使用,Activity.onResume()
方法和静态布尔值自己跟踪应用程序的可见性。将“可见性”状态存储在其他类中。好的选择是您自己实现的Application
或 a Service
(如果您想检查服务的活动可见性,此解决方案也有 [一些变体][4])。
示例
此示例提供了一项活动的框架代码,但如果您需要跟踪多个活动,则可以添加更多布尔值。
实现自定义Application
类(注意isActivityVisible()
静态方法):
public class MyApplication extends Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
在以下位置注册您的应用程序类AndroidManifest.xml
:
<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
添加onPause
和onResume
到项目中的每一个Activity
(如果你愿意,你可以为你的活动创建一个共同的祖先,但如果你的活动已经从MapActivity
/ListActivity
等扩展,你仍然需要手动编写以下内容):
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}