0

我已经正确设置Google Cloud Messaging for Android并接收来自我的服务器的通知。但是,如果应用程序处于打开状态,但我想避免发出通知,但要获取数据并在应用程序中通知用户。请查看下面我GcmIntentService,该通知被处理:GCM Android通知当应用程序打开

@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

我建议你看看这个:Checking if an Android application is running in the background有几个“黑客”知道应用程序是否在后台运行,其中一个是通过考虑使用活动管理器运行的进程。另一个是跟踪活动的生命周期。在我提供的链接中,您可以获得更详细的信息。

希望这会有所帮助。

+0

我设置了一个布尔值来知道应用程序是否正在运行。这不是我正在问的,但另一方面, – GameDevGuru

+0

,你可以创建一个静态方法,无论你想要的,我不知道你想如何注意用户,如果它是一个吐司/对话或任何一种对于需要上下文的视图,您可以在意图中使用getApplicationContext()来获取它。如果您使用的是数据库,您也可以在活动中调用静态方法并处理该事件,只需考虑更新UI中的更改所需的参数(在MainActivity中)。 –

相关问题