Ich habe einen Teil des Codes, in dem ich zuerst setText
, dann eine Toast
machen und danach versuche ich über Bluetooth zu verbinden. Das Problem ist, dass meine setText
und Toasts
erst angezeigt werden, nachdem die Verbindung hergestellt wurde.Toasts werden nicht gleichzeitig angezeigt
Ich habe versucht, Log.i
statt Toasts
setzen und sie wurden gleichzeitig angezeigt.
Kann mir jemand erklären, warum und wie Toasts
gleichzeitig zu machen?
Code:
........
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;
}
Ok, ich verstand über 'getApplicationContext()'. Aber kannst du bitte erklären, was Hintergrund-Thread ist und wie man es macht? – Tryam
Ich habe verstanden, dass ich eine Konstruktion wie 'AsyncTask.execute (new Runnable() { @Override öffentlichen void run() {} }) machen sollte;' aber wo man es und was hineinlegen? Vielen Dank! – Tryam
Sie können entweder einen AsyncTask- oder einen Hintergrund-Thread mit Handler verwenden, nicht beide zusammen. Das einfachste Beispiel für die Verwendung ist entweder http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html#example –