首頁 >Java >java教程 >如何從 Android AsyncTask 傳回布林值?

如何從 Android AsyncTask 傳回布林值?

Patricia Arquette
Patricia Arquette原創
2024-12-14 19:15:18941瀏覽

How to Return Boolean Values from an Android AsyncTask?

從 AsyncTask 返回布林值

AsyncTask 提供了一種在 Android 應用程式中執行後台操作的便捷方法。但是,當您需要將 AsyncTask 的結果傳達給主執行緒時,例如傳回布林值,標準的 AsyncTask 完成方法可能就不夠用了。

原始程式碼

考慮以下程式碼,其中AsyncTask 用於建立FTP連線:

AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,
            _address, _username, _password, _port);
task.execute();

在此程式碼中,AsyncConnectTask 將在後台執行連接操作,並將結果作為布林值傳回。但是,沒有機制可以在主線程中檢索此佈林值。

自訂介面方法

要從 AsyncTask 傳回布林值,您可以建立一個將在建立 AsyncTask 的活動或片段中實作的自訂介面。例如:

public interface MyInterface {
    public void myMethod(boolean result);
}

修改的AsyncTask

然後可以修改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) {
        // ...
        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) {
            // Connection successful
        } else {
            // Connection failed
        } 
    }
});

task.execute();

透過使用此方法,您可以從 AsyncTasks 返回布林值並在 main 上處理結果執行緒。

以上是如何從 Android AsyncTask 傳回布林值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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