我已正确设置适用于Android的Google Cloud Messaging,并从我的服务器接收通知。但是,如果应用程序处于打开状态但我会在应用程序中获取数据并通知用户,我希望避免收到通知。请查看下面的GcmIntentService,其中处理通知:
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty()) {
if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
if(MainActivity.app_is_open){
// I would like to call a function from MainActivity to fetch data here
} else
// Sends notification here
}
}
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
我无法引用MainActivity中的函数,因为它们是非静态的。常见的方法是什么?我很难找到与这种情况有关的任何问题。
答案 0 :(得分:0)
我建议你看看这个:Checking if an Android application is running in the background有几个" hacks"要知道应用程序是否在后台运行,其中一个是考虑使用活动管理器运行的进程。另一个是跟踪活动生命周期。在我提供的链接中,您将能够获得更详细的信息。
希望这有帮助。