加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Android Thread.start()CalledFromWrongThreadException

发布时间:2020-12-15 04:19:01 所属栏目:Java 来源:网络整理
导读:我不确定我的提示是否正确,因为我没有得到预期的输出.我有一个类,我在其中调用一个应该启动一个线程的方法. public class MainActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {beginListenForData()} beginListenForData函
我不确定我的提示是否正确,因为我没有得到预期的输出.我有一个类,我在其中调用一个应该启动一个线程的方法.

public class MainActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
beginListenForData()
}

beginListenForData函数用于启动一个线程并检查数据是否有数据供读取.如果是这种情况,它会读取并更新UI变量:

void beginListenForData()
{
    Thread workerThread = new Thread(new Runnable() {
        @Override
        public void run()
        {    
            int bytesAvailable = 3;
            while(!Thread.currentThread().isInterrupted())
            {
                try
                {
                    bytesAvailable = mmInStream.available();
                    if(bytesAvailable > 0)
                    {
                        byte[] packetBytes = new byte[bytesAvailable];
                        mmInStream.read(packetBytes);
                bytesAvailable = mmInStream.available();
                String s = new String(packetBytes);
                text.setText(s);
                    }
                }
                catch (Exception e)
                {
            // TODO Auto-generated catch block
                e.printStackTrace();
                }
            }
        }
    });

       workerThread.start();
   }

}

我没有得到所需的输出.该线程应该读取数据或检查数据是否可用.如果可用,则读取它并将UI变量设置为读取的值.

我正确地执行了吗?我的代码中有什么问题吗?

解决方法

线程无法更新GUI
您可以使用runOnUiThread()方法或使用Handler

编辑:处理程序的示例:How to use an Android Handler to update a TextView in the UI Thread?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读