1

サーバーのフラグを定期的にチェックするアプリケーションがあります。そして、このフラグの値に応じてメッセージを表示します。

メッセージを表示したくない場合、アプリケーションは前面にありません。また、SharedPreferences を使用して、アプリケーションの状態を手動で保存します。各アクティビティで、次のようなことを行います。

@Override
protected void onStart() {
    super.onStart();
    SharedPreferences.Editor prefs = context.getSharedPreferences("myprefs", getApplicationContext().MODE_PRIVATE).edit();
    prefs.putBoolean("appInFront", true);
    prefs.commit();
}
@Override
protected void onPause() {
    super.onPause();
    SharedPreferences.Editor prefs = context.getSharedPreferences("myprefs", getApplicationContext().MODE_PRIVATE).edit();
    prefs.putBoolean("appInFront", false);
    prefs.commit();
}

これにより、「appInFront」設定からアプリケーションの状態を取得できます。

SharedPreferences prefs = context.getSharedPreferences("myprefs", Context.MODE_PRIVATE);
boolean appInFront = prefs.getBoolean("appInFront", true);      

しかし、アプリケーションの現在の状態を取得するためのネイティブ メソッドまたは方法が存在する可能性があります (アプリケーションは前面にあるのか、それともバックグラウンドにあるのか)。

4

1 に答える 1

3

あなたはどのようなメッセージを表示していますか?アクティビティの通知または何か? アプリケーションのどこでその状態情報が必要ですか?

BaseActivity を作成し、そこから他のすべてのアクティビティを拡張できます。したがって、より少ないコードを記述する必要があります。また、onPause() に対応するものとして、onResume() を使用する必要があります。

public class BaseActivity{

public static boolean appInFront;

@Override
protected void onResume() {
    super.onResume();
    appInFront = true;
}
@Override
protected void onPause() {
    super.onPause();
    appInFront = false;
}

}

その static public boolean を使用すると、「どこからでも」アプリの可視性の状態を尋ねることができます。アプリの再起動間の状態を覚えておく必要はおそらくないので、ブール値で十分です。

if(BaseActivity.appInFront){
    //show message
}
于 2011-07-01T18:55:23.200 に答える