2013-05-31 138 views
0

我想在用戶不在應用程序時使用通知欄中的通知,並在使用通知時使用通知。識別用戶是否正在使用該應用程序的正確方法是什麼?

通知(任一風格)將從服務發出,因此在通知時不會知道任何活動。

什麼是正確和最可靠的模式,以確保你知道這一點?

+0

使用GCM?請參閱:http://stackoverflow.com/questions/15819663/check-if-app-is-open-during-a-gcm-onmessage-event/15949194#15949194 – Klaasvaak

+0

這與GCM無關 - 找出如何顯示GCM消息只是這種情況下的動機。但是總體思路 - 活動知道他們是否在前臺,每個候選人都會通知該服務。 –

+0

你猜對了。它與GCM結合在一起。謝謝,我認爲這會起作用,但答案通過了活動實例。我不認爲這是必要的。只需一個簡單的布爾值就足夠了。 –

回答

1

好的基礎上,從這裏另一個問題Klaasvaak的建議就是我所做的(但它比建議的要簡單一點)

在我的服務(或任何其他類。可能最好是在一個更普遍的類)我們有這個代碼...

... 
private static boolean viewingApp = false; 

public static synchronized void setViewingApp(boolean viewing) 
{ 
    viewingApp = viewing; 
} 

public static boolean isViewingApp() 
{ 
    return viewingApp; 
} 
... 

如果上面的類被破壞,它會很好,因爲如果再次需要,布爾值將恢復爲假。

的setViewingApp()方法被以上,其中每個活動延伸的基類執行...

... 
@Override 
protected void onResume() 
{ 
    MyClassCOntainingTheBoolean.setViewingApp(true); 
    super.onResume(); 
} 

@Override 
protected void onPause() 
{ 
    MyClassCOntainingTheBoolean.setInApp(false); 
    super.onPause(); 
} 
... 
相關問題