【发布时间】:2016-03-26 23:05:57
【问题描述】:
我的应用应该使用通过 Internet 传输的数据在地图上跟踪飞机。我使用 Service 接收数据,然后使用 Messenger 在它和我的 MainActivity (thanks to this guide) 之间发送消息,它有我的带有 SupportMapFragment (MainMapFragment) 和 RecyclerView Fragment (AircraftListFragment) 的片段。
每个Marker在一个HashMap中,MainMapFragment中有一个Aircraft对象,Aircraft对象由MainActivity维护。我的 Activity 是否有类似 notifyDatasetChanged() 的东西来更新我的 MapFragment?显然我不能像这样在 MainMapFragment 中编写方法:
public void updateAircraftArrayList(ArrayList<Aircraft> updatedAircrafts){
this.aircraftArrayList = updatedAircrafts;
updateMarkers(); //Update the Markers on the map
}
在我的 MainActivity 中这样访问:
class IncomingHandler extends android.os.Handler {
@Override
public void handleMessage(Message msg){
String aircraftMsg = msg.getData().getString("fromSocket");
Aircraft newAircraft = decodeSbsMessage(aircraftMsg);
aircraftArrayList = searchThroughArrayListForAircraft(newAircraft);
MainMapFragment.updateAircraftArrayList(aircraftArrayList);
}
}
我听说过 EventBus,但据我所知,它对于处理来自 Socket 的恒定流不是很好。
【问题讨论】:
标签: android google-maps android-activity android-service google-maps-markers