我正在处理推送通知,我需要知道推送通知何时到达,用户是否将应用程序置于前台,以便显示此类推送通知或执行其他操作。
我正在使用从ParsePushBroadcastReceiver扩展的自定义接收器。
如果有任何想法,请帮助我,提前致谢。
答案 0 :(得分:2)
创建一个应用程序类,如下所示。如果您已有,请包含以下内容
public class MyApp extends Application {
private boolean isAppInForeground;
public static boolean isAppInForeground(Context context){
MyApp app = (MyApp) context.getApplicationContext();
return app.isAppInForeground;
}
public static void setAppInForeground(Context context, boolean isInForeground){
MyApp app = (MyApp) context.getApplicationContext();
app.isAppInForeground = isInForeground;
}
}
创建这样的BaseActivity并从此BaseActivity扩展您的所有活动
public class BaseActivity extends AppCompatActivity {
@Override
protected void onPause() {
super.onPause();
MyApp.setAppInForeground(this, false);
}
@Override
protected void onResume() {
super.onResume();
MyApp.setAppInForeground(this, true);
}
}
在通知广播接收者的onReceive()中,您现在可以检查应用是否在前台
@Override
public void onRecieve(Context context, Intent intent){
if(MyApp.isAppInForeground(context)){
//app in foreground
}
}
答案 1 :(得分:1)
创建一个单独的类,如下所示 -
public class MyVisibilityManager {
private static boolean mIsVisible = false;
public static void setIsVisible(boolean visible) {
mIsVisible = visible;
}
public static boolean getIsVisible() {
return mIsVisible;
}
}
创建一个基本活动类,在其onresume上设置mIsVisible为true,onPause将其设置为false。在您的广播接收器中,您可以检查mVisible是真还是假,并执行相关操作。