7

GCMIntentServiceプッシュ通知に使用するアプリケーションを開発しています。ListViewだから私は私のタブにあるもののデータを更新したいと思いますTabActivityGCMIntentServiceそれで、私が受け取ったときからそれを行うことは可能GCMIntentMessageですか?

例えば

SecondTabActivity.callOnResume(); //or something like this

また

SecondTabActivity.callOnCreate(); // or something like this

を使用せずにこれを行う必要がありstartActivity(intent)ます。原因 私が行うと、 SecondTabActivity が私のものから抜け出し、TabHostnew のように始まりActivityます。を更新する関数はListView)onCreate(onResume()SecondTabActivity にあるので、それらを呼び出したいのです。この方法以外に方法があれば参考にしてください。ありがとう

4

2 に答える 2

8

良い方法は、ブロードキャスト インテントを使用することです。

  1. TabActivity の onCreate で、Context.registerReceiver メソッドを使用して、「MyGCMMessageReceived」などの名前のインテントのブロードキャスト レシーバーを登録します。

  2. そのブロードキャスト レシーバーで、リストを更新するメソッドを呼び出します。

    this.registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // INSERT CODE TO REFRESH LIST VIEW
        }
    }, new IntentFilter("MyGCMMessageReceived"));
    
  3. GCMIntentService の onMessage メソッドが「MyGCMMessageReceived」という名前のインテントをブロードキャストするようにします。

        Intent intent = new Intent("MyGCMMessageReceived");
        this.sendBroadcast(intent);
    
于 2012-12-19T09:46:46.857 に答える
1

Service to Activity Communications でLocalBroadcastManagerを使用する必要があります。

IntentService では、ローカル ブロードキャストを介して新しい情報を送信し、TabActivity ではレシーバーを登録する必要があります。onReceive メソッドでは、ビューを更新する必要があります。

ここに簡単な例があります: LocalBroadcastManager の例

于 2012-12-19T09:55:38.280 に答える