Ich habe diesen Java-Code in Android ausgeführt und debuggte und ich habe festgestellt, dass die return true
hat keine Wirkung, weil es als break
handeln und dann die return false
wird schließlich ausgeführt. Ich habe das Android Studio und seine Step-Over-Funktion zum Debuggen verwendet.Confused Ausführung in Versuch mit Rückgabewert in Java
protected Boolean doInBackground(Void... params) {
// Cancel discovery because it will slow down the connection
mAdapter.cancelDiscovery();
// Start connection attempt
for(int i=0;i<10;i++) {
try {
// Connect the device through the socket. This will block
// until it succeeds or throws an exception
mmSocket.connect();
// connection successful [it should return true]
return true;
}
catch (IOException connectException) {
// Unable to connect; close the socket and get out
try { mmSocket.close(); }
catch (IOException closeException) { }
}
}
// connection failed 10 times [but it always returns false]
return false;
}
UPDATE:
Wie EJP und andere sagen, return true
nicht als Bruch handeln. Die doInBackground
Funktion wird wie erwartet ausgeführt. Das Problem war, dass die AsyncTask wegen eines externen Codeblocks immer sofort nach der Ausführung von return true
abgebrochen wurde. Das tut mir leid.
können Dieser Beitrag geschlossen. Vielen Dank.
Wenn Sie eine Rückkehr in schreiben, denn es fungiert immer als eine Pause. Und selbst wenn eine Ausnahme in Ihrer Verbindung auftritt, fangen Sie sie nur ab und kehren danach nicht mehr zurück. Warum möchten Sie Ihre connect-Anweisung in eine for-Schleife setzen? Auch wenn Sie sicherstellen möchten, dass es solange weiter versucht, bis Sie eine Verbindung herstellen, tun Sie dies in einer do while-Schleife und checken Sie ein, wenn die Verbindung erfolgreich hergestellt wurde. –
es ist nicht sehr gute Programmierung, weil ich die return-Anweisung innerhalb einer Schleife verwenden, und dies würde dazu führen, dass Garbage Collection fehlschlagen. –
@FadySaad Nein, es würde nicht zur Fehlfunktion der Speicherbereinigung führen. Ich kann mir nicht vorstellen, wo Sie diese Idee haben. – EJP