2011-03-31 53 views
5

我正在通過從每個Activity的onResume()和來自onPause()的minusActivity()調用plusActivity()來跟蹤當前在我的應用程序(應該是0或1)中可見的活動數Android應用程序背景的簡單檢查

plus/minusActivity在myApplication類中,它擴展了Application。

該方法遞增和遞減一個計數器。每次調用minusActivity()時,它都會發佈一個在2秒後運行的runnable。當runnable執行時,如果另一個活動在2秒前關閉的最後一個活動之後未打開(例如foregroundedActivities == 0,因爲沒有在2秒內調用plusActivity()),那麼它調用一個方法來做一些需要發生的事情當背景時。

這裏有一個片段:

public void plusActivity(){ 
    foregroundedActivities++; 
} 

public void minusActivity(){ 
    foregroundedActivities--; 
    timingHandler.removeCallbacks(checkBackgroundTask); 
    timingHandler.postDelayed(checkBackgroundTask, 2000); 
} 

public void checkIfBackgrounded(){ 
    if(foregroundedActivities==0){ 
     doWhateverWeDoWhenBackgrounded(); 
    } 
} 

public Runnable checkBackgroundTask=new Runnable(){ 

    @Override 
    public void run() { 
     checkIfBackgrounded(); 
    } 

}; 

鑑於此過程中工作在2秒的時間內,這一個活動沒有回調都參與其中,爲它實現後臺檢測一種可接受的方式,還是我真的需要使用服務完成所有這些工作?這似乎有很多開銷,我看不到任何好處,因爲這似乎工作正常。

回答

1

您的解決方案可能工作,但我不知道。

您可能可以使用BroadcastReceiver。如果您使用BroadcastReceiver,則可以在活動執行onPause()以及加號/減號代碼時發出Intent。 BroadcastReceiver將能夠再次執行您的應用程序...