android如何实现messagebox

what_1010 2011-01-09 06:38:36
AlertDialog可以实现messagebox,但是没有阻塞ui。

例如
AlertDialog.Builder builder = new AlertDialog.Builder(context);
。。。
builder.show();
。。。

这么执行下来,执行完show以后,并没有阻塞ui,而是继续执行之后的了。

如何在执行show以后阻塞,直到在messagebox上点击OK或Cancel以后再执行show之后的代码?
...全文
1928 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DrSmart 2011-01-10
  • 打赏
  • 举报
回复
楼主你的编码逻辑可能需要改进,非阻塞的就是状态机,轮训查询状态值,可能cpu占用高一些吧,不过改进的方法很多,要看你上下文的代码了,干什么的
freshui 2011-01-10
  • 打赏
  • 举报
回复
Message+状态机 就可以做的,为啥一定要阻塞呢?
Android的那么多流程都这样做的。 Activity的生命周期也是个状态机来控制的啊
what_1010 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 freshui 的回复:]
Message+状态机 就可以做的,为啥一定要阻塞呢?
Android的那么多流程都这样做的。 Activity的生命周期也是个状态机来控制的啊
[/Quote]

请举个例子。
我的需求跟简单,我就是希望我在点击OK或者cancel之前不要执行show之后代码。然后根据我点击的按钮决定后续的动作。
what_1010 2011-01-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ameyume 的回复:]
主线程默认5s(广播是10s)无响应,就报ANR了。
如果要实现楼主那样的阻塞UI,需要修改ANR的时间吧。
[/Quote]

修改ANR时间不太可行,难道用户不点击按钮就要报错?这样不太合理~
应该有别的方法吧,嵌套check的话,方法未免太笨了。。。
我想android涉及人员不会想不到这点吧。。
what_1010 2011-01-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whatwhy83 的回复:]
AlertDialog的控件里面加消息响应
[/Quote]

请说详细点
ameyume 2011-01-09
  • 打赏
  • 举报
回复
主线程默认5s(广播是10s)无响应,就报ANR了。
如果要实现楼主那样的阻塞UI,需要修改ANR的时间吧。
whatwhy83 2011-01-09
  • 打赏
  • 举报
回复
AlertDialog的控件里面加消息响应
what_1010 2011-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 freshui 的回复:]
android不允许阻塞主线程, 如果阻塞, 马上就弹出一个框,说应用程序无响应,是否关闭
[/Quote]

如果不阻塞主线程的话,进行提交时会很麻烦的。。。

例如:
if(check1() || MsgBox()) {
return false;
}

if(check2()) {
return false;
}
...

如果check1失败,需要MsgBox执行忽略还是中止确认的时候,如果不阻塞UI,那么该怎么做呀。。。
freshui 2011-01-09
  • 打赏
  • 举报
回复
android不允许阻塞主线程, 如果阻塞, 马上就弹出一个框,说应用程序无响应,是否关闭

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧