有没有办法获得应用程序的当前状态?

时间:2011-07-01 18:06:04

标签: android application-state

我有一个应用程序定期检查服务器是否有一些标志。 然后根据此标志的值显示一条消息。

我不想显示消息,然后应用程序不在前面。 我使用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 个答案:

答案 0 :(得分: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;
}

}

使用该静态公共布尔值,您可以从“任何地方”询问应用的可见性状态。 您可能不需要记住应用程序重新启动之间的状态,因此布尔值就足够了。

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