从 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中文网其他相关文章!