LocalBroadcastManager
をご利用いただけます。
アイデアは、新しいメッセージを受信したときサービスからブロードキャストを送信し、
class YourService extends GcmListenerService{
@Override
public void onMessageReceived(String from, Bundle bundle) {
...
Intent pushNotification = new Intent("pushNotification");
//put any extra data using Intent.putExtra() method
LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
...
}
}
今すぐあなたのフラグメント上でそれを受け取るあなたのフラグメント上でそれを受け取ることです。
class TaskFragment extends Fragment{
private BroadcastReceiver mBroadcastReceiver;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("pushNotification")) {
// new push message is received
//update UI
handlePushNotification(intent);
}
}
};
...
}
@Override
protected void onResume() {
super.onResume();
// registering the receiver for new notification
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mBroadcastReceiver,
new IntentFilter("pushNotification"));
}
@Override
protected void onDestroy() {
//unregister receiver here
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mBroadcastReceiver);
super.onDestroy();
}
}
あなたはこのgistを参照するか、見つけることができますWeb上のチュートリアル。
大したものではありませんが、(これを)getActivity()に変更する必要があります。 –
ありがとうございます。回答が更新されました。 –