如何知道用户是否打开了应用程序

时间:2016-03-10 09:43:03

标签: android push-notification

我正在处理推送通知,我需要知道推送通知何时到达,用户是否将应用程序置于前台,以便显示此类推送通知或执行其他操作。

我正在使用从ParsePushBroadcastReceiver扩展的自定义接收器。

如果有任何想法,请帮助我,提前致谢。

2 个答案:

答案 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是真还是假,并执行相关操作。