使用对话框阻止Android线程

时间:2010-12-09 18:00:00

标签: java android multithreading

我有一个Android应用程序可以自由地连接到蓝牙设备。当我尝试连接到未与手机配对的设备时,会出现一个对话框提示用户输入密码。密码是先验的,但由于没有方法以编程方式输入(至少在标准的Android API中),因此必须向用户显示然后输入密码。

我目前所拥有的是一个通过抓取BluetoothSocket并在其上调用.connect()来启动连接的线程。如果需要配对,则该呼叫将被阻止,直到用户在对话框中输入密码。

为了抢占这一点,我在我的activity的处理程序中添加了一些显示对话框的东西。在发送消息之前,我做了一个虚拟对象传递,并在发送消息和尝试连接之间,在其上调用.wait(),在收到.notify()之后我知道OnClick对话框,但我无法引用内部AlertDialog类中的已处理消息,this question中的问题也是如此。

我可以让它回到持有该线程的类的回调,但它看起来有点笨重,引出了我的核心问题:是我的结构从根本上被打破了吗?我应该怎么做呢?

Another related question建议使用通知系统,但是在这里使用另一个对话框镜像密钥对话框似乎要好得多。

2 个答案:

答案 0 :(得分:0)

我认为Romain Guy在您提供的链接中的回答可能有所帮助。您可以根据需要在“活动”之间传递信息。

Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)

答案 1 :(得分:0)

不要阻止,只使用它们实现Interfaces和Fire(interface = listener),

  1. 搜索
  2. 选择设备
  3. 连接:
  4. 如果设备已配对,则连接。
  5. 如果没有配对显示对话框,并且在正面点击时连接。
  6.   

    BWT,我认为你需要扩展Dialog,并实现你自己的方法,以保存你想要配对的设备的一些信息,我更喜欢你实现自己的接口。