首頁 >Java >java教程 >如何從執行 FTP 操作的 Android AsyncTask 取得布林結果?

如何從執行 FTP 操作的 Android AsyncTask 取得布林結果?

Patricia Arquette
Patricia Arquette原創
2024-12-24 03:40:14155瀏覽

How Can I Get a Boolean Result from an Android AsyncTask Performing FTP Operations?

從 AsyncTask 取得布林結果

在您的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn