0
我想在用戶不在應用程序時使用通知欄中的通知,並在使用通知時使用通知。識別用戶是否正在使用該應用程序的正確方法是什麼?
通知(任一風格)將從服務發出,因此在通知時不會知道任何活動。
什麼是正確和最可靠的模式,以確保你知道這一點?
我想在用戶不在應用程序時使用通知欄中的通知,並在使用通知時使用通知。識別用戶是否正在使用該應用程序的正確方法是什麼?
通知(任一風格)將從服務發出,因此在通知時不會知道任何活動。
什麼是正確和最可靠的模式,以確保你知道這一點?
好的基礎上,從這裏另一個問題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();
}
...
使用GCM?請參閱:http://stackoverflow.com/questions/15819663/check-if-app-is-open-during-a-gcm-onmessage-event/15949194#15949194 – Klaasvaak
這與GCM無關 - 找出如何顯示GCM消息只是這種情況下的動機。但是總體思路 - 活動知道他們是否在前臺,每個候選人都會通知該服務。 –
你猜對了。它與GCM結合在一起。謝謝,我認爲這會起作用,但答案通過了活動實例。我不認爲這是必要的。只需一個簡單的布爾值就足夠了。 –