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 サイトの他の関連記事を参照してください。