Есть ли способ получить текущее состояние приложения? - PullRequest
1 голос
/ 01 июля 2011

У меня есть приложение, которое периодически проверяет сервер на наличие каких-либо флагов.И затем отображает сообщение в зависимости от значения этого флага.

Я не хочу отображать сообщение, тогда приложение не находится впереди.И я использую 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);      

Но может быть, существует собственный методспособ получить текущее состояние приложения (приложение находится в передней части или в фоновом режиме)?

1 Ответ

3 голосов
/ 01 июля 2011

Какое сообщение вы отображаете? Уведомление или что-то в вашей деятельности? Где в вашем заявлении вам нужна эта информация о состоянии?

Вы можете написать 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;
}

}

С помощью этого статического публичного логического значения вы можете запрашивать из любого места состояние видимости вашего приложения. Возможно, вам не нужно запоминать состояние между перезапусками приложения, поэтому достаточно логического значения.

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