In Ihrer Android-Anwendung verwenden Sie AsyncTasks, um FTP-Vorgänge auszuführen. Sie stehen jedoch vor der Herausforderung, einen booleschen Wert zurückzugeben, der angibt, ob die Verbindung erfolgreich ist.
Ursprünglich verwendete Ihr Code ftpConnect, um die Verbindung synchron herzustellen, und speicherte das Ergebnis in einer booleschen Variablen (Status). Mit AsyncTasks versuchen Sie jedoch, den Vorgang asynchron auszuführen.
Um einen booleschen Wert von Ihrer AsyncTask zurückzugeben, sollten Sie die Implementierung einer Schnittstelle in Betracht ziehen:
public interface MyInterface { public void myMethod(boolean result); }
Implementieren Sie diese Schnittstelle in Ihrer AsyncTask und übergeben Sie eine Instanz davon als Parameter an den Konstruktor:
public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> { private MyInterface mListener; public AsyncConnectTask(Context context, String address, String user, String pass, int port, MyInterface mListener) { mContext = context; _address = address; _user = user; _pass = pass; _port = port; this.mListener = mListener; } @Override protected Boolean doInBackground(Void... params) { .... return result; } @Override protected void onPostExecute(Boolean result) { if (mListener != null) mListener.myMethod(result); } }
Erstellen Sie in Ihrer Aktivität oder Ihrem Fragment eine Instanz der AsyncTask und übergeben Sie Ihre Schnittstellenimplementierung als Parameter:
AsyncConnectTask task = new AsyncConnectTask(SiteManager.this, _address, _username, _password, _port, new MyInterface() { @Override public void myMethod(boolean result) { if (result == true) { Toast.makeText(SiteManager.this, "Connection Succesful", Toast.LENGTH_LONG).show(); } else { Toast.makeText(SiteManager.this, "Connection Failed:" + status, Toast.LENGTH_LONG).show(); } } }); task.execute();
In der myMethod-Implementierung können Sie das Ergebnis nach Bedarf verarbeiten. Beachten Sie, dass diese Methode im UI-Thread
aufgerufen wirdDas obige ist der detaillierte Inhalt vonWie kann ich ein boolesches Ergebnis von einer Android-AsyncTask erhalten, die FTP-Vorgänge ausführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!