当前位置:   article > 正文

android FATAL EXCEPTION: Thread - 101 错误问题_android 接口报101

android 接口报101

  最近遇到一个错误,小错误,但有可能经常不注意的地方,我们都知道大多数情况下我们都是在子线程进行耗时操作,在主线程更新UI。因此我们有很多子线程耗时操作的东西出现(说了句废话);   我来说说我遇到的问题情况,

  1. new Thread(new Runnable() {
  2. @Override
  3. public void run() {
  4. String numgo = EDITGO.getText().toString().trim();
  5. Log.w("Main", "num" + numgo);
  6. if (numgo.equals("")) {
  7. Toast.makeText(contextPub, "不能为空", Toast.LENGTH_SHORT).show();
  8. } else {
  9. String sOut = ComS2.ES_LotteryGoOut(Integer.valueOf(numgo));
  10. DuihuakuangShow(sOut);
  11. }
  12. }
  13. }).start();

貌似上面的问题没有错 ,上面代码的意思很简单,就是我开启一个子线程,然后拿到输入框的值,进行非空的判断,然后Toast提示一下,不为空执行我的一串口的耗时操作。整体下来没毛病啊老铁,初级程序员啊。。。。。。。。。。。。

因为我们在子线程,不能执行Ui主线程。。。toast是在主线程显示的东西。。。。。。所以............、

解决办法使用  

runOnUiThread(new Runnable() {
    @Override
    public void run() {

在这使用Toase

   }
});

runOnUiThread 看这个东西  单看名就能理解了   run(这个东西)   on (回到 )  UI (ui)  Thread (线程)   回到主线程Ui线程执行动作,哈哈,我是这么理解的,正确的代码

  1. new Thread(new Runnable() {
  2. @Override
  3. public void run() {
  4. String numgo = EDITGO.getText().toString().trim();
  5. Log.w("Main","num"+numgo);
  6. if(numgo.equals("")){
  7. runOnUiThread(new Runnable() {
  8. @Override
  9. public void run() {
  10. Toast.makeText(contextPub,"不能为空",Toast.LENGTH_SHORT).show();
  11. }
  12. });
  13. }else {
  14. String sOut = ComS2.ES_LotteryGoOut(Integer.valueOf(numgo));
  15. DuihuakuangShow(sOut);
  16. }
  17. }
  18. }).start();

runonUIThread 只不过是其中一种  你也可能开启Handler  执行  ,

其实把问题用大白话说就是     子线程执行耗时操作,主线程执行刷新UI.你要使用那个工具回到主线程执行Ui刷新就可以了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/254988
推荐阅读
相关标签
  

闽ICP备14008679号