首页 >Java >java教程 >如何从执行 FTP 操作的 Android AsyncTask 获取布尔结果?

如何从执行 FTP 操作的 Android AsyncTask 获取布尔结果?

Patricia Arquette
Patricia Arquette原创
2024-12-24 03:40:14153浏览

How Can I Get a Boolean Result from an Android AsyncTask Performing FTP Operations?

从 AsyncTask 获取布尔结果

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn