收到通知时更新当前UI

时间:2014-02-10 10:37:56

标签: android android-service google-cloud-messaging android-broadcast

我正在使用 GCM 概念开发聊天类型应用程序。我成功地向已经注册并使用我的应用程序的朋友发送消息。我在双方的 SQLite 中存储会话。意味着当发送者发送消息并且接收者接收消息时,则会在两侧存储会话。现在我想要的是,如果用我的'X'朋友打开聊天GUI并且我向该朋友'X'发送消息,并且几秒钟后如果新消息从同一朋友'X'到达,那么我可以同时更新GUI

我想出了this 教程并成功更新了GUI。但我的问题是,我怎么才能知道我当前的聊天对象是谁?意味着当消息到达时,我的GUI将被更新,但如果我从我的其他朋友'Y'接收消息,则GUI不应该更新(因为聊天GUI是通过朋友'X'的对话打开的)。它应该在通知中,然后当我点击该通知时,只有那个'Y'朋友聊天才应该更新。我怎样才能做到这一点?我也提供了这段代码,以了解哪些活动是最重要的。

 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 // get the info from the currently running task
 List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
 Log.d("topActivity", "CURRENT Activity : " +  taskInfo.get(0).topActivity.getClassName());
 ComponentName componentInfo = taskInfo.get(0).topActivity;
 componentInfo.getPackageName(); 

但没有得到如何解决问题。帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当前聊天页面与用户x或y相关联。每当您在gcm服务中收到消息时,如果聊天来自与当前聊天页面相同的用户,您可以更新,否则您可以更新当前活动,说明其他用户已发送消息,或者如果应用程序未运行或在任何活动中,请发布通知。共享首选项可用于设置当前用户的唯一ID和当前活动详细信息,以便您的gcm接收器知道该怎么做。

答案 1 :(得分:0)

你可以创建1个方法,即fillListchat()。当消息到达然后该特定方法调用线程并在handler.so中设置GUI。每当你打开任何你的朋友列表,如x,y或z,那么这个列表将是默认情况下更新......希望它对你有用...