【问题标题】:How do I get return values from execute functions in android?如何从android中的执行函数中获取返回值?
【发布时间】:2021-02-07 19:46:24
【问题描述】:

在android中,是否可以从execute中运行的函数获取返回值?

调用文件

Connector connector  = new Connector();
connector.execute("login", ipPop.getText().toString(), username.getText().toString(), password.getText().toString());

函数文件

public class Connector extends AsyncTask<String,Void,Void>{
    @Override
    protected Void doInBackground(String... voids) {
        return false;
    }
}

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    您正在 Android 中使用 AsyncTask。当您的类扩展它时,您可以覆盖另外 3 个方法。在这里,您可以覆盖onPostExecute,它与来自 d​​oInBackground 返回的数据一起传递。由于 onPostExecute 在 UI 线程上运行,您可以从那里更新 UI,例如取消进度条。

    @Override
    protected void onPostExecute(String result) {
       // "result" is data return from doInBackground method
       // execution of result of Long time consuming operation
           
    }
    

    Refer this sample for your understanding

    根据最新的 android 版本,不推荐使用 AsyncTask 避免使用它。 Check alternatives

    【讨论】:

    • @303 所以,我从你所说的理解是使用替代品应该会更好,但是因为我时间不多,我认为我应该先专注于使用 AsyncTask 然后切换到在项目的维护期间稍后的替代方案。请问,这是否意味着我可以使用onPostExecute将值返回给调用execute的函数?
    • 好的。不通过 AsyncTask 直接你不能。你想达到什么?你一定是在尝试登录,对吧?根据成功或失败启动 AsyncTask 后,在 onPostExecute 方法中处理 UI 更改。如果您使用 AsyncTask 进行 API 调用,我会建议使用像 Retrofit 这样的库。它会简单得多。
    • 哦...我明白了,我想我明白了,谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多