ホームページ >Java >&#&チュートリアル >FTP 操作を実行する Android AsyncTask からブール結果を取得するにはどうすればよいですか?
Android アプリケーションでは、AsyncTasks を使用して 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 中国語 Web サイトの他の関連記事を参照してください。