ユーザーがアプリの外にいるときは通知バーで通知を使用し、使用中はトースト通知を使用したいと考えています。
通知 (どちらの形式でも) はサービスから発行されるため、通知時にアクティビティについての知識はありません。
これを確実に知るための、正しくて最も信頼できるパターンは何ですか?
ユーザーがアプリの外にいるときは通知バーで通知を使用し、使用中はトースト通知を使用したいと考えています。
通知 (どちらの形式でも) はサービスから発行されるため、通知時にアクティビティについての知識はありません。
これを確実に知るための、正しくて最も信頼できるパターンは何ですか?
別の質問からのKlaasvaakの提案に基づいて、私がしたことは次のとおりです(ただし、提案されたものよりも少し簡単です)
私のサービス(または他のクラス。おそらくより普遍的なクラスにある方が良いでしょう)には、このコードがあります...
...
private static boolean viewingApp = false;
public static synchronized void setViewingApp(boolean viewing)
{
viewingApp = viewing;
}
public static boolean isViewingApp()
{
return viewingApp;
}
...
上記のクラスが破棄された場合、必要に応じてブール値が false に戻るため、問題ありません。
上記の setViewingApp() メソッドは、すべてのアクティビティが拡張する基本クラスで実行されます...
...
@Override
protected void onResume()
{
MyClassCOntainingTheBoolean.setViewingApp(true);
super.onResume();
}
@Override
protected void onPause()
{
MyClassCOntainingTheBoolean.setInApp(false);
super.onPause();
}
...