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

如何從 Android AsyncTask 傳回布林值?

Patricia Arquette
發布: 2024-12-14 19:15:18
原創
938 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板