在您的 Android 应用程序中,您正在使用 AsyncTask 来执行 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中文网其他相关文章!