我正在做一个应用程序,它有一个线程总是在特定的UDP地址/端口上听到自定义消息传递协议。这些需要传递给相应更改UI的片段,一种情况是Maps API v2上的更新标记postition。
对UDP的监听是遗留的,我必须实现一个在消息到达时将被调用的接口方法。
UDP --->遗产听众--->界面方法---> ????? ---> UI片段
我该怎么用?????? ? 我调查过:
服务 - 我觉得它是倒置的概念,因为片段调用服务,我只需要在消息到达时调用片段。
ContentProvider - 不太适合结构化数据。
处理程序 - 不明白如何构造代码来使用它,因为我无法将处理程序传递给侦听UDP的线程,并且必须考虑接口方法。
如果有特定类型的消息到达时只能调用片段的方法,则会获得奖励积分。每个片段只对协议中消息类型的子集感兴趣。
答案 0 :(得分:0)
另一种解决方案是通过获取对象的静态引用并传递数据来与UI片段进行通信 。 所以在你片段中你有一个像
这样的公共方法public static MyFragment getInstance(){
return mFragment;
}
然后你有一个像
这样的方法public void updateUI(Data data){
//code to update the UI
}
然后在接口方法中,当您从Legacy Listener接收数据时,您可以
MyFragment myFrag = MyFragment.getInstance();
myFrag.updateUI(data);
很容易。
否则我认为更正确的方法是使用Messenger和Handler。