1
私はGCMを使用していますが、私はonResume()
からBroadcastReceiver
を登録して通知を受け取ったときに1つの問題に直面していますが、ときどき私のonResume()
機能がこれが原因で2回呼び出されています問題。なぜこれが2回働いているのか分かりません。アンドロイドで2回呼び出し機能。
コードGCM目的のサービスクラスについて:活動の
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
なぜあなたはONSTARTでonResumeを呼ぶのですか? – 2ndGAB
もし私がそれを呼んでいないのであれば、私の履歴書は常に時間のためだけに働いているわけではありません。@ 2ndGAB –
「仕事していない」とは何を意味するのですか?他のものは、コピー/貼り付けの間違いですか、あなたの放送受信機がonResume()にありますか?あなたはonCreate()とそれに続いてregisterReceiver()コールとunRegisterReceiver()をDestroy()で使うのが良いでしょう。 – 2ndGAB