我有这段代码,点击一个按钮,一个服务将从一个新线程启动,该服务将启动我的 TCP 客户端。
TCP 客户端一旦连接就会发送一个倒计时事件来通知片段继续工作。
代码看起来像这样
connectButton = (Button) view.findViewById(R.id.connectBT);
connectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// ***** IntentService Way ****** //
Intent intent = new Intent(getActivity(), NetworkService.class);
getActivity().startService(intent);
// Once client is connected, give the server some info about client
mCountDown.await(3000, TimeUnit.MILLISECONDS);
String json = jsonMaker.toJson(new DeviceInfo());
DispatchToServer(json);
} catch (Exception ie) {
ie.getMessage();
}
}
}).run();
但是当我单击连接时,我的 UI 仍然由于某种原因冻结,即使我正在等待与 UI 线程不同的线程。当我使用 AsyncTask 而不是服务时,相同的代码工作正常。