ホームページ >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 からブール値を返す

AsyncTasks は、Android アプリケーションでバックグラウンド操作を実行する便利な方法を提供します。ただし、ブール値を返すなど、AsyncTask の結果をメイン スレッドに伝達する必要がある場合は、標準の AsyncTask 完了メソッドでは不十分な場合があります。

元のコード

次のコードを考えてみましょう。ここでは、AsyncTask を使用して FTP を確立しています。 connection:

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

このコードでは、AsyncConnectTask がバックグラウンドで接続操作を実行し、結果をブール値として返します。ただし、メイン スレッドでこのブール値を取得するメカニズムはありません。

カスタム インターフェイスのアプローチ

AsyncTask からブール値を返すには、 AsyncTask を作成するアクティビティまたはフラグメントに実装されるカスタム インターフェイス。例:

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

Modified 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 からブール値を返し、その結果をメインで処理できます。スレッド。

以上がAndroid AsyncTask からブール値を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。