不同时显示祝酒词

时间:2016-09-21 15:02:19

标签: java android bluetooth

我有一部分代码,我首先setText,然后创建Toast,之后我尝试通过蓝牙连接。问题是我的setTextToasts仅在连接完成后才会显示。

我尝试将Log.i代替Toasts并同时显示它们。

有人可以解释为什么以及如何同时制作Toasts吗?

代码:

........

else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {      
    tvDevices.setText("");
    Toast.makeText(getApplicationContext(), "Lost connection!", Toast.LENGTH_SHORT).show();
    connect(btDevice, ConstantsVariables.reconnectionAttempts);
}

public void connect(BluetoothDevice bt, int attempts){
    Toast.makeText(getApplicationContext(), "Trying to connect...", Toast.LENGTH_SHORT).show();
    if(attempts > 0){
        for(int i = 1; i <= ConstantsVariables.reconnectionAttempts; i++){
            ConnectThread thread = new ConnectThread(bt);
            boolean connectVar = thread.connect();
            if(connectVar){
                break;
            }
        }
    } 
}

.......

public boolean connect() {
    BA.cancelDiscovery();
    try {
        mSocket.connect();
    } catch (IOException e) {
        Log.d("CONNECTTHREAD","Could not connect: " + e.toString());
        try {
            mSocket.close();
        } catch (IOException exception){}
        return false;
    }
    return true;
}

1 个答案:

答案 0 :(得分:0)

在尝试连接时,您可能会阻止UI线程。尝试将连接代码移动到后台线程或AsyncTask,并处理AsyncTask回调中的UI更改。

编辑:传递给Toast的上下文getApplicationContext()也不明确。你参加活动吗?在这种情况下,它应该简单地指向活动的上下文,即this而不是应用程序的上下文