2013-05-13 4 views
6

私はAndroid開発の初心者です。私はGoogle Cloud Messagingに接続する2つのことに興味があります。Androidでアプリを強制終了し、設定から強制終了するとGCMメッセージが表示されますか?

  1. iOSのようにバックグラウンドで長時間実行すると、Androidは絶対にアプリケーションを強制終了しますか?もし私のアプリがAndroidによって殺された後にGCM通知が届くのでしょうか?
  2. 強制的に閉じる(設定メニューから)とアプリがAndroidによって強制終了されるときの違いはありますか?強制終了すると、GCM通知が届きますか?
+0

@ noundla、あなたが言っていることを教えてください。なぜ強制終了後にmsgを受け取るのですか? –

+0

@Noundla、いいえ、プロセスが実行されていない場合は、GCMを受け取ったときに結果がキャンセルされます。あなたのlogcat:W/GCM/DMM:ブロードキャストインテントコールバック:result = CANCELED forIntent {act = com.google.android.c2dm.intent.RECEIVE pkg = xxxx(extras)} – Zennichimaro

答えて

5

1 - はい。ただし、gcmをリッスンするブロードキャスト受信者をマニフェストにインストールすると、とにかくトリガーされます。そのイベントで何をするかは、アプリによって異なります。一般的な方法は、メッセージを処理するインテントサービスを開始することです。アプリのアクティビティとやり取りするのはあなた次第です。

2 - アンドロイド3.1から、ユーザーがアプリケーションを閉じると、ユーザーがアプリを再起動しない限り、ブロードキャストの通知を停止します。詳細については、「停止したアプリケーションの制御を起動する」のhereをチェックしてください。

+1

ありがとう。フォースクローズを行うかどうか分かったので、私はGCM通知を受け取りません。 しかし、なぜ私は理解していません。ここで私がドキュメントで読んだことは: "バックグラウンドのサービスやアプリケーションは、停止されたアプリケーションをアクティブにするために許可されるべきブロードキャストインテントにFLAG_INCLUDE_STOPPED_PACKAGESフラグを追加することで、この動作を無効にすることができます。 Force Closeを実行したときに内部的に何が起こったのか説明してください。そして、その文書からその行をコメントしてください。事前に感謝します! – MainstreamDeveloper00

+0

アプリケーションが停止しているとフラグが立てられた場合(ブロードキャスト受信で傍受したものなど)のすべてのブロードキャストインテントが、その状態からアプリケーションが終了するまでブロックされます(つまり、最初の起動/強制ブロックの後で再起動)。この目的は、不要なアプリケーションを、バックグラウンドで実行したり、強制終了したりすることなくブロックすることです。ブロードキャストを傍受すると、たとえosがあなたのアプリを殺したとしても、バックグラウンドでコードを実行できるので、一種の保護です。 – fedepaol

関連する問題