Я работаю с GCM, но сталкиваюсь с одной проблемой, когда я получил уведомление. Я регистрирую свой BroadcastReceiver
из моего onResume()
, но иногда моя функция onResume()
звонит 2 раза из-за этого я сталкиваюсь проблема. Я не понимаю, почему это работает 2 раза.вызов функция 2 раз в android. Не удалось предотвратить столкновение 3 веб-сервисов
Код для умысел класса г см службы:
if (!extras.isEmpty()) {
if (GoogleCloudMessaging.
MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
sendNotification(this, msgg);
} else if (GoogleCloudMessaging.
MESSAGE_TYPE_DELETED.equals(messageType)) {
sendNotification(this, msgg);
updateMyActivity(this, msgg);
bundle.putString("result", msgg);
receiver.send(STATUS_FINISHED, bundle);
} else if (GoogleCloudMessaging.
MESSAGE_TYPE_MESSAGE.equals(messageType)) {
updateMyActivity(this,msgg);
sendNotification(this, msgg);
}
}
// GcmBroadcastReceiver.completeWakefulIntent(intent);
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
//This function will create an intent. This intent must take as parameter the "unique_name" that you registered your activity with
static void updateMyActivity(Context context, String message) {
Log.e(TAG, "updateMyActivity: ");
Intent intent = new Intent("unique_name");
//put whatever data you want to send, if any
intent.putExtra("message", message);
//send broadcast
context.sendBroadcast(intent);
}
onResume()
метод деятельности:
@Override
public void onStart()
{
super.onStart();
onResume();
}
@Override
public void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter(
"unique_name");
mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("message");
}
, но я с этим "msg_for_me" 2 раза. проверьте скриншот. http://prntscr.com/dpzxrs
Почему вы называете onResume в OnStart? – 2ndGAB
Потому что, если я не называю это, то мое резюме fucntion не работает на все время, работая только на время @ 2ndGAB –
Что значит «не работает», это не делает работу, или она не называется. Другое дело, это ошибка копирования/вставки или ваш широковещательный приемник находится в onResume() ?? Вам лучше поместить его в onCreate(), за которым следует вызов registerReceiver() и unRegisterReceiver() в разделе Destroy() – 2ndGAB