我有一个活动和一个单独的服务器线程。服务器线程连接到服务器。在活动中,我有一个 LocationListener。onLocationChanged 正在向服务器线程发送数据,但我的数据不会到达服务器。
如果我直接从我的活动中发送数据,它工作正常。
有人能帮我吗?
我有一个活动和一个单独的服务器线程。服务器线程连接到服务器。在活动中,我有一个 LocationListener。onLocationChanged 正在向服务器线程发送数据,但我的数据不会到达服务器。
如果我直接从我的活动中发送数据,它工作正常。
有人能帮我吗?
独立线程可能无法访问 UI 元素。您应该查看runOnUIThread文档。
不看代码就无法理解确切的问题..但根据我的理解,你可以试试这个 -
在服务器线程中使用处理程序从 UI 线程接收数据。
例如在您的 serverthread 可运行 -
@Override
public void run(){
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// Act on the message
}
};
Looper.loop();
}
从 onLocationChanged() ,您可以将消息发布到处理程序。
public void onLocationChanged(Location loc) {
Message m = new Message();
Bundle bundle = new Bundle();
bundle.putString(DATA_KEY, "location specific data");
m.setData(bundle);
mHandler.sendMessage(m);
}