Я правильно настроил 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, потому что они не являются статичными. Каков общий подход? У меня возникли проблемы с поиском каких-либо вопросов, связанных с этой ситуацией.
Я установил логическое значение, чтобы узнать, работает ли приложение или нет. Это не то, о чем я спрашиваю, хотя ... – GameDevGuru
, с другой стороны, вы можете создавать статический метод, где бы вы ни хотели, я не знаю, как вы хотите заметить пользователя, если это тост/диалог или какой-либо вид который нуждается в контексте, вы можете получить его с помощью getApplicationContext() в намерении. Если вы используете БД, вы также можете вызвать статический метод в активности и обработать событие там, просто подумайте, какие параметры вам понадобятся для обновления изменений в пользовательском интерфейсе (в MainActivity). –