android不允许阻塞主线程, 如果阻塞, 马上就弹出一个框,说应用程序无响应,是否关闭

解决方案 »

  1.   


    如果不阻塞主线程的话,进行提交时会很麻烦的例如:
    if(check1() || MsgBox()) {
    return false;
    }if(check2()) {
    return false;
    }
    ...如果check1失败,需要MsgBox执行忽略还是中止确认的时候,如果不阻塞UI,那么该怎么做呀
      

  2.   

    AlertDialog的控件里面加消息响应
      

  3.   

    主线程默认5s(广播是10s)无响应,就报ANR了。
    如果要实现楼主那样的阻塞UI,需要修改ANR的时间吧。
      

  4.   


    修改ANR时间不太可行,难道用户不点击按钮就要报错?这样不太合理~
    应该有别的方法吧,嵌套check的话,方法未免太笨了 
    我想android涉及人员不会想不到这点吧。。
      

  5.   

    Message+状态机 就可以做的,为啥一定要阻塞呢?
    Android的那么多流程都这样做的。 Activity的生命周期也是个状态机来控制的啊
      

  6.   

    楼主你的编码逻辑可能需要改进,非阻塞的就是状态机,轮训查询状态值,可能cpu占用高一些吧,不过改进的方法很多,要看你上下文的代码了,干什么的
      

  7.   


    请举个例子。
    我的需求跟简单,我就是希望我在点击OK或者cancel之前不要执行show之后代码。然后根据我点击的按钮决定后续的动作。