繁体   English   中英

即使我正在处理另一个,UI线程也会卡住

[英]UI Thread gets stuck even though I'm working on another

我有这段代码,单击按钮后,将从新线程启动服务,该服务将启动我的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();

但是当我单击connect时,即使我在等待与UI线程不同的线程,UI仍然由于某些原因冻结。 当我使用AsyncTask代替服务时,相同的代码工作正常。

你写

new Thread(new Runnable() {...}).run();

Thread#run只是Runnable接口的Thread类的实现。 它所做的只是委托给您传递给构造函数的Runnablerun方法。

Java线程使用start方法start

new Thread(new Runnable() {...}).start();

尝试调用thread.start()而不是thread.run()

使用Thread.start()而不是Thread.run()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM