我有一个应用程序定期检查服务器是否有一些标志。 然后根据此标志的值显示一条消息。
我不想显示消息,然后应用程序不在前面。 我使用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);
但是可能存在本机方法或方法来获取应用程序的当前状态(应用程序在前面还是在后台)?
答案 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
}