从GCMIntentService调用onResume()或onCreate()

时间:2012-12-19 09:40:25

标签: android

我正在开发使用GCMIntentService推送通知的应用程序。因此,我想刷新ListView标签中TabActivity的数据。那么当我收到GCMIntentServiceGCMIntentMessage时可以从SecondTabActivity.callOnResume(); //or something like this 那样做吗?

例如

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

startActivity(intent)

我需要在不使用TabHost的情况下执行此操作;因为如果我做了SecondTabActivity已经离开我的Activity,它就像新的ListView一样开始。刷新onCreate(的功能位于onResume())和{{1}}的SecondTabActivity中,这就是我想要调用它们的原因。如果除此之外还有其他任何方式,请参阅它。感谢

2 个答案:

答案 0 :(得分: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);
    

答案 1 :(得分:1)

您应该在Service to Activity Communications中使用LocalBroadcastManager

在您的IntentService中,您通过本地广播发送新信息,在TabActivity中您必须注册接收者。在onReceive方法中,您必须刷新视图。

这里有一个简单的示例:LocalBroadcastManager example