7

我正在开发GCMIntentService用于推送通知的应用程序。所以我想刷新ListView我的TabActivity. 那么有可能从GCMIntentService我收到 and 时做到这一点GCMIntentMessage吗?

例如

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

或者

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

我需要在不使用的情况下执行此操作startActivity(intent);因为如果我这样做, SecondTabActivity 就会脱离我的状态TabHost,它就像 new 一样开始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 回答