2012-12-17 44 views
0

我有一個靜態註冊的BroadcastReceiver處理在清單中的SMS。有沒有一種正確的方法來確定該應用程序運行時是否調用了該接收器類上的onReceive()方法?查找在應用程序運行時是否調用了BroadcastReceiver上的onReceive的簡便方法?

這是必需的,如果當應用程序沒有運行收到短信我就可以開始一個活動,否則,只是處理信息,並顯示一些通知。通過使用Activity.onPause()Activity.onResume()方法和靜態布爾你自己的應用程序的

回答

0

軌道的知名度。將「可見性」狀態存儲在某個其他課程中。好的選擇是你自己實現的ApplicationService(如果你想檢查服務的活動可見性,那麼這個解決方案也有[一些變化] [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" > 

添加和onResumeActivity項目(您可能如果您願意,可以爲您的活動創建一個共同的祖先,但是如果您的活動已經從MapActivity/ListActivity等你仍然需要手工編寫以下):

@Override 
    protected void onResume() { 
     super.onResume(); 
     MyApplication.activityResumed(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     MyApplication.activityPaused(); 
    } 
相關問題