我有一個靜態註冊的BroadcastReceiver處理在清單中的SMS。有沒有一種正確的方法來確定該應用程序運行時是否調用了該接收器類上的onReceive()方法?查找在應用程序運行時是否調用了BroadcastReceiver上的onReceive的簡便方法?
這是必需的,如果當應用程序沒有運行收到短信我就可以開始一個活動,否則,只是處理信息,並顯示一些通知。通過使用Activity.onPause()
,Activity.onResume()
方法和靜態布爾你自己的應用程序的
我有一個靜態註冊的BroadcastReceiver處理在清單中的SMS。有沒有一種正確的方法來確定該應用程序運行時是否調用了該接收器類上的onReceive()方法?查找在應用程序運行時是否調用了BroadcastReceiver上的onReceive的簡便方法?
這是必需的,如果當應用程序沒有運行收到短信我就可以開始一個活動,否則,只是處理信息,並顯示一些通知。通過使用Activity.onPause()
,Activity.onResume()
方法和靜態布爾你自己的應用程序的
軌道的知名度。將「可見性」狀態存儲在某個其他課程中。好的選擇是你自己實現的Application
或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" >
添加和onResume
每Activity
項目(您可能如果您願意,可以爲您的活動創建一個共同的祖先,但是如果您的活動已經從MapActivity
/ListActivity
等你仍然需要手工編寫以下):
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}