Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 收到通知时更新当前用户界面_Android_Android Service_Google Cloud Messaging_Android Broadcast - Fatal编程技术网

Android 收到通知时更新当前用户界面

Android 收到通知时更新当前用户界面,android,android-service,google-cloud-messaging,android-broadcast,Android,Android Service,Google Cloud Messaging,Android Broadcast,我正在使用GCM概念开发聊天类型的应用程序。我成功地向同样注册并使用我的应用程序的朋友发送消息。我将对话存储在两侧的SQLite中。意思是当发送方发送消息,接收方接收消息时,会话被存储在双方。现在我想要的是,如果与我的“X”朋友打开聊天GUI,我向该朋友“X”发送消息,几秒钟后,如果来自同一个朋友“X”的新消息到达,那么我可以同时更新GUI 我想出了教程,并成功地更新了GUI。但我的问题是,我怎么知道我现在和谁聊天?意味着当消息到达时,我的GUI将被更新,但如果我收到来自其他朋友“Y”的消息,则

我正在使用GCM概念开发聊天类型的应用程序。我成功地向同样注册并使用我的应用程序的朋友发送消息。我将对话存储在两侧的SQLite中。意思是当发送方发送消息,接收方接收消息时,会话被存储在双方。现在我想要的是,如果与我的“X”朋友打开聊天GUI,我向该朋友“X”发送消息,几秒钟后,如果来自同一个朋友“X”的新消息到达,那么我可以同时更新GUI

我想出了教程,并成功地更新了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(); 
ActivityManager am=(ActivityManager)this.getSystemService(ACTIVITY_服务);
//从当前正在运行的任务中获取信息
列表taskInfo=am.getRunningTasks(1);
Log.d(“topActivity”,“当前活动:+taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo=taskInfo.get(0).topActivity;
getPackageName();

但不知道如何解决问题。我们将不胜感激

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

您可以创建一个方法,即fillListchat()。当消息到达时,该特定方法将在线程中调用并在处理程序中设置GUI。因此,每当您打开任何朋友列表(如x)时,y或z,则此列表将默认更新..好..我希望它对您有用..

ya buddy。。。但问题是如何知道谁是当前的发送者和接收者???将这些信息放在消息{from:'x',msg:'blah blah'}中。你必须知道你在和谁说话?是的,让我告诉你一件事,我也在留言中传递了这个名字。所以现在当接收到消息时,首先它将存储在接收方的db中。所以我想我需要检查条件,并将消息名与数据库中的最后一个条目进行比较。如果两个r相同,则应更新GUI,否则不。。。我说的对吗abbiya???不需要将最后一个条目与数据库进行比较。使用更多uniq属性来查找用户,而不是名称。查找应用程序所在的活动和用户。我知道目前的活动有上述代码(在我的问题中发布),但如果你建议我不要使用我的概念,那么如何了解用户?你能详细说明@dipali吗?我是说你能详细解释你的想法吗。。我不明白你想解释什么。谢谢…在gcmmessage接收器中,您必须调用一个方法fillListchat()。在该方法中,数据将存储在db中,gui将在线程处理程序中刷新。是,聊天记录是我发送和接收的内容,将附加到自定义ListViews的文本中,请查看我刚刚在abbiya的答案上发表的评论,并让我知道这样做是否正确???