在活动中接收GCM数据

时间:2015-08-22 06:42:29

标签: android multithreading event-handling

我正在通过GCM从服务器接收数据。我想在Activity上更新ListView。但是,当我收到数据时,它在BroadcastReceiver中。如何将该数据发送到Activity,以便我可以更新ListView。

编辑:

我正在开发一个RSS应用程序。首先,我使用MainActivity从我自己的服务器获取所有RSS数据并在ListView中显示它。我将GCM用于在将新数据添加到服务器时收到通知。我在单独的类中获取新数据并将此数据存储在List<FeedItem>中。但是,问题是我不知道如何将新的List<FeedItem>数据发送到MainActivity来显示它。这就像FaceBook中的“New Feeds”。

2 个答案:

答案 0 :(得分:1)

当您在接收器中接收数据时,您需要再次广播该数据。当您获得该广播时,在活动中设置广播接收器更新列表。

public void sendBroadcast() 
{
   Intent intent = new Intent("send");
   intent.putExtra("current speed", "102.4");
   intent.putExtra("latitude", "12.2342342");
   intent.putExtra("longitude", "12.21124");
   LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}

答案 1 :(得分:1)

您可以使用broadcast reciverinterface更新列表视图。 对于您的情况,另一种解决方案是使用服务。 因为我在我的服务中使用以下代码:

   public void updateConversationUi() {
    if (mOnConversationUpdate != null) {
        mOnConversationUpdate.onConversationUpdate();
    }
}

其中onConversationUpdate是在列表视图发生任何更改时调用的接口。