我正在开发使用GCMIntentService
推送通知的应用程序。因此,我想刷新ListView
标签中TabActivity
的数据。那么当我收到GCMIntentService
和GCMIntentMessage
时可以从SecondTabActivity.callOnResume(); //or something like this
那样做吗?
例如
SecondTabActivity.callOnCreate(); // or something like this
或
startActivity(intent)
我需要在不使用TabHost
的情况下执行此操作;因为如果我做了SecondTabActivity已经离开我的Activity
,它就像新的ListView
一样开始。刷新onCreate(
的功能位于onResume()
)和{{1}}的SecondTabActivity中,这就是我想要调用它们的原因。如果除此之外还有其他任何方式,请参阅它。感谢
答案 0 :(得分:8)
一种好方法是使用广播意图。
在TabActivity的onCreate中,使用Context.registerReceiver方法为名为“MyGCMMessageReceived”的意图注册广播接收器。
在该广播接收器中,调用刷新列表的方法。
this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// INSERT CODE TO REFRESH LIST VIEW
}
}, new IntentFilter("MyGCMMessageReceived"));
让您的GCMIntentService的onMessage方法广播名为“MyGCMMessageReceived”的意图。
Intent intent = new Intent("MyGCMMessageReceived");
this.sendBroadcast(intent);
答案 1 :(得分:1)
您应该在Service to Activity Communications中使用LocalBroadcastManager。
在您的IntentService中,您通过本地广播发送新信息,在TabActivity中您必须注册接收者。在onReceive方法中,您必须刷新视图。
这里有一个简单的示例:LocalBroadcastManager example