1.Android 子线程和UI的问题

真切感受到了,主线程不能尝试网络连接的意思。我一个类,类的构造函数里面我准备初始化socket,然后主Activity点击按钮,例化类,调试到例化类,直接跑飞了,都不能定位在哪一行了。。。然后就显示不好意思,我得退出了。

当然这个问题现在解决了,把socket建立放到了类的线程里面,但是现在退出好像有点问题,应该是没有正常退出线程吧。

先看解决办法,好吧,使用状态位,想想,C++的线程,好像也是这么处理的。

关闭还是关闭不了,好像阻塞了,先解决接受不了信息这个问题。查出来是,我在第二个java里需要访问Activity的资源,我用的是 ((EditText)activity.findViewById(R.id.Tmp_view)).setText(s);强行来,貌似报错了。然后我就传递个TextEdit,也不让我用text_view.setText(s);蛋疼


问题越来越神奇了,现在我传递MainActivity,然后呢,调用他的函数来设置EditText,也进去了报错了,我真是

现在改成再不行,我真的报警了

为啥呢,还是不行,走到中间这句话就不行了,放到同一个类下也不行

终于tn的好了,先总结如下。确定问题的一般步骤是,利用debug模式,去调试pad,然后比如出现了异常,logcat里面会显示错误,像我这:为啥没错误呢,因为错误的时候没截图,哈哈哈。。就这个意思

然后知道错误了,去百度这个错误,确定是子线程不能去修改主线程的UI(所以,我接收到数据后,调用显示函数,就是子线程想改ui)。知道问题后,百度起来就顺利多了

利用handler,来解决这个问题,直接贴代码了:

主线程端:

就是这样子,前面private Handler什么的就不截图了

子线程端:

忽略内容,我是把MainActivity传过来的,不知道好不好,应该是不好,因为这样,我还是会手贱的利用这个干吗干吗,不安全不是么,试试传handler吧

也是行的,好吧啦,传handler好了。

稍微加加注释,解决下一个问题吧。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值