您的位置:首页 > 移动开发 > Android开发

Android学习记录(十) 弹框阻塞处理

2016-05-03 20:38 561 查看
需求:需要做一个弹框,弹框完成后再进行其它数据处理。

开始的时候在主线程做了for循环来处理弹框触发和相应的逻辑,结果发现无论是alertdialog还是popupwindow都无法真正做到阻塞主线程处理。

开始的时候有了个奇葩的想法,想写标志位来阻塞主线程。。。弹框结束后来改写标志位,结果你懂的。。。(ui全阻塞。。。)

后来发现其实问题的根源就在于主线程for循环,就不应该用for循环。

现在的流程是使用handler来接收消息,然后在handler中触发popupwindow弹框,在popupwindow中当按键按下时,再发送消息给handler,处理下一条数据。这样就解决了。

附代码:

handler的代码

private Handler hander = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.obj instanceof Integer) {
int pos = (Integer) msg.obj;
if (pos<downloadlist.size())
{

if (***)

{

//弹框
showDialog(identity,pos);
} else 

{

//跳下一条数据
Message message = hander.obtainMessage(0, pos+1);
hander.sendMessage(message);
}
}
else {
//任务完成
Utility.showToast("***");
}
}
}
};


showDialog当dialog处理完成后,再调用跳转回队列处理数据。

//跳下一条数据
Message message = hander.obtainMessage(0, pos+1);
hander.sendMessage(message);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: