我正在制作聊天应用程序(只是为了好玩)。我使用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()方法,不鼓励使用。有一种方法可以用另一种方法替换这种方法,检查片段是否可见(请记住,此检查是在广播接收器中进行的)?如果没有,有更好的方法吗?
答案 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
}