在您的 Android 應用程式中,您正在使用 AsyncTask 來執行 FTP 操作。然而,您面臨著返回一個布林值來指示連接是否成功的挑戰。
最初,您的程式碼使用 ftpConnect 同步建立連線並將結果儲存在布林變數(狀態)中。但是,使用 AsyncTasks,您嘗試非同步執行操作。
要從AsyncTask 傳回布林值,請考慮實作一個介面:
public interface MyInterface { public void myMethod(boolean result); }
在AsyncTask 中實作此介面並將其實例作為參數傳遞給建構函式:
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); } }
在您的活動中或片段,建立AsyncTask的實例並將您的介面實作作為參數傳遞:
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();
在 myMethod 實作中,您可以根據需要處理結果。請注意,該方法將在 UI 執行緒上呼叫
以上是如何從執行 FTP 操作的 Android AsyncTask 取得布林結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!