2011-07-01 9 views
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);  

をすることができるが、取得するには、ネイティブメソッドや方法が存在する私のような何かを、各アクティビティで アプリケーションの現在の状態(フロントのアプリケーションですか、バックグラウンドですか)

答えて

3

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

BaseActivityを記述し、他のすべてのアクティビティをから拡張することができます。したがって、コードを少なく書く必要があります。アプリの表示状態のため、「どこでも」から頼むことができる静的なパブリックブールで

public class BaseActivity{ 

public static boolean appInFront; 

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

}

:そして、onPause(の対応)として、あなたはonResume()を使用する必要があります。 アプリケーションの再起動の間の状態を覚えている必要はないので、ブール値で十分です。

if(BaseActivity.appInFront){ 
    //show message 
} 
+0

SDKサンプルのApiDemos/app/AlarmControllerのように、BroadcastReceiverでToast Notificationsを使用しています。 – Serg

+0

ありがとうHerrmann、私はそのようにした。 – Serg

+0

なぜonResumeメソッドにsuper.onStart()がありますか? – maysi