仅在片段可见时发送通知

时间:2016-05-12 22:05:10

标签: android android-fragments push-notification android-notifications

我正在制作聊天应用程序(只是为了好玩)。我使用Pushy API在两个用户之间发送消息。按照pushy.me站点中提供的教程,在广播接收器中接收推送消息。好吧,这部分工作正常,但现在我正在制作像Whats App这样的通知系统,当用户不在聊天时启动通知栏。

我的想法如下:如果聊天片段可见,只需使用LocalBroadcastManager sendBroadcast方法更新片段,否则启动通知。

我使用以下代码进行成功:

if (!Utility.isAppInBg(context)) {
                Intent chatPushNotification = new Intent(Constants.CHAT_PUSH_NOTIFICATION);
                chatPushNotification.putExtra("chat", obj.toString());
                LocalBroadcastManager.getInstance(context).sendBroadcast(chatPushNotification);
            } else {
                if (title != null  && msg != null) {

                    NotificationUtil.notify(context, NOTIFICATION_ID, notifyIntent,
                            URLDecoder.decode(title, "UTF-8"), URLDecoder.decode(msg, "UTF-8"));
                }
            }

问题是方法isAppInBg使用ActivityManager和getRunningAppProcesses()方法,不鼓励使用。有一种方法可以用另一种方法替换这种方法,检查片段是否可见(请记住,此检查是在广播接收器中进行的)?如果没有,有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

这种方法对我来说很好。

public class MyActivity extends Activity {

static boolean active = false;

 @Override
public void onStart() {
    super.onStart();
    active = true;
}

@Override
public void onStop() {
    super.onStop();
    active = false;
}

@Override
public void onPause() {
    super.onPause();
    active = false;
}

@Override
public void onResume() {
    super.onResume();
    active = true;

}

和接收器

 if(!MyActivity.active){
    //alert notification
 }
 else{
   //send broadcast
 }