Vor allem, wenn Sie Nachricht in onMessage() von GCMIntentService bekommen, brodcast senden. Wie,
Intent i = new Intent();
i.setAction("appendChatScreenMsg");
i.putExtra("sender_id", b.getString("sender_id"));
i.putExtra("message", b.getString("message"));
i.putExtra("time", getCurrentTime());
i.putExtra("date", getCurrentDate());
this.sendBroadcast(i);
Als nächstes stellen BroadcastReceiver in Ihrem Chat-Aktivität oder Fragment Chat. Wie,
BroadcastReceiver appendChatScreenMsgReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
if (b != null) {
int totalItems = adapter.getCount() - 1;
ChatModel model = new ChatModel("" + sharedPreferences.getString(VariableBag.USERID, ""), ""+ b.getString("sender_id"), "" + b.getString("message"), b.getString("date"), b.getString("time"));
arrChat.add(model);
if (adapter != null) {
if (lstChat.getLastVisiblePosition() == totalItems) {
adapter.notifyDataSetChanged();
lstChat.setSelection(adapter.getCount());
} else {
adapter.notifyDataSetChanged();
}
} else {
adapter = new ChatAdapter(getActivity());
lstChat.setAdapter(adapter);
adapter.notifyDataSetChanged();
lstChat.setSelection(adapter.getCount());
}
}
}
};
Als nächstes registrieren BroadcastReceiver in onCreate(). Wie
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().registerReceiver(this.appendChatScreenMsgReceiver, new IntentFilter("appendChatScreenMsg"));
}
nächste unregisterReceiver in onDestroy(). Wie,
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(appendChatScreenMsgReceiver);
}
Erläuterung:
1.) Wenn die Meldung in GCMIntentService() empfangen wird, in erster Linie, Wetter überprüfen Sie im Chat-Bildschirm sind oder nicht.
2.) Wenn Sie im Chat-Bildschirm sind, senden Sie Ihre Nachricht mit Intent und Broadcast.
3.) Erstellen Sie jetzt Ihren BroadcastReceiver() im Chat-Bildschirm.
4.) Registrieren Sie Ihren BroadcastReceiver() in onCreate() und entfernen Sie die Registrierung in onDestroy().
5.) Wenn die Nachricht gesendet wird und Sie sich im Chat-Bildschirm befinden, erhalten Sie diesen Broadcast-Empfänger.
6.) Jetzt Was auch immer Sie tun möchten.
7.) Wenn Sie nicht im Chat-Bildschirm sind, zeigen Sie die entsprechende Nachricht in der Benachrichtigung an. Sende nicht.
Hinweis: Vergewissern Sie sich, in welchem Bildschirm Sie sich gerade befinden.