android AlertDialog 线程问题
在某个void过程中调用send_a_msgbox();发现运行完成后并没有直接跳出一个对话框。感觉是线程相关问题,然后听说在Oncreate中调用,self只需要传Ma...
在某个void过程中调用send_a_msgbox();发现运行完成后并没有直接跳出一个对话框。
感觉是线程相关问题,然后听说在Oncreate中调用,self只需要传Mainactivity.this就可以了。但是如果是其他地方调用呢? 展开
感觉是线程相关问题,然后听说在Oncreate中调用,self只需要传Mainactivity.this就可以了。但是如果是其他地方调用呢? 展开
1个回答
展开全部
AlertDialog.Builder()传的参数是Context,在任何地方调用传当前Activity的实例都可以,最好是传ApplicationContext以防内存泄漏
你的Dialog显示不出来有可能是在线程内部调了显示对话框的方法,这样肯定显示不出来的,所有UI操作都应该在主线程中执行,要想子线程执行过程中显示对话框应该使用handler传递消息,在handler里去调用显示对话框的方法
你的Dialog显示不出来有可能是在线程内部调了显示对话框的方法,这样肯定显示不出来的,所有UI操作都应该在主线程中执行,要想子线程执行过程中显示对话框应该使用handler传递消息,在handler里去调用显示对话框的方法
更多追问追答
追问
我并没有使用thread这种东西。但是send_a_msgbox()是在一个button的OnClickListener中调用的,不知道有没有问题。
另外如果要用handler,该怎么用呢?
追答
没有用Thread就没必要用handler,在监听里写完全可以,可以简单的认为thread外部都是主线程,在主线程显示Dialog都没有问题
Handler可以用handler.post(runnable)和handler.sendmessage(message)这两个方法去通知主线程执行UI操作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询