0

Я правильно настроил Google Cloud Messaging для Android и получаю уведомления с моего сервера. Однако я бы хотел избежать уведомления, если приложение открыто, но извлечение данных и уведомление пользователя в приложении. Посмотрите, пожалуйста, по моей GcmIntentService ниже, где обрабатывается уведомление:Уведомление о регистрации GCM при открытии приложения

@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() в намерении. Если вы используете БД, вы также можете вызвать статический метод в активности и обработать событие там, просто подумайте, какие параметры вам понадобятся для обновления изменений в пользовательском интерфейсе (в MainActivity). –

Смежные вопросы