java - 没有回调接口(interface)的AsyncTask

标签 java android callback android-asynctask

我正在尝试解决这个问题:我有一个从 AsyncTask 扩展的类,它执行一些 http 方法,如下所示:

    public class RESTManager extends AsyncTask<Object, Object, String>
{
    public RESTManager(String url, MethodTypes myMethod,ICallbackHandler hndl, String     restMethod)
    {
        initialize();
    }

    private String doGET()
    {
    }

    private String doPOST()
    {
    }

    @Override
    protected String doInBackground(Object... params)
    {

    }

    @Override
    protected void onPostExecute(String result)
    {
    }

}

因此,从 Activity I' 中执行此操作:

RESTManager webService = new WSManager(URL, MethodTypes.REGISTER, params, this, WSManager.GET_METHOD);
webService.execute();

然后Activity在callbak方法中接收响应(因为Activity实现了这个接口(interface)):

public void response(String response)
{
    // some process
}

这工作正常,但我的问题是我希望答案来自对某个函数的相同调用,然后该函数调用 .execute 方法,例如。

// This is a new class
public class MyWebServices()
{
    public User getUser(int id)
    {
        User myUser;

        RESTManager webService = new WSManager(URL, MethodTypes.REGISTER, params, this, WSManager.GET_METHOD);
        webService.execute();

        // BUT I WANT TO RETURN FROM HERE THE CALL FROM THE ACTIVITY....LIKE

        return myUser;
    }
}

因此,从 Activity 来看,这将是:

MyWebServices myService = new MyWebServices();
User usr = myService.getUser(id);

希望理解我试图描述的内容,谢谢!

最佳答案

你想要的会导致 UI 阻塞。 Android 不允许你这样做。网络调用应该是异步的,所以这种方法是错误的。处理 response() 方法。

UPD:阻止 UI 会导致“应用程序无响应对话框”,这会令用户烦恼。另外,如果网络调用失败怎么办?还是要等半小时才能完成?

关于java - 没有回调接口(interface)的AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193233/

相关文章:

java - 嵌套异常是 java.lang.NoClassDefFoundError : Could not initialize class com. my.util.HibernateUtil

android - gRPC 客户端 : error in compiled file (io. grpc.protobuf 不存在)

node.js - 如何从异步调用返回值

javascript - 将参数传递给 matchmedia addListener 回调函数

java - 填充 JComboBox 的正确方法?

Java优雅的执行方法直到条件满足

java - 如何为 KeyValueTextInputFormat 使用整数输入键

php - 使用 PHP 通过 Android 从 MySQL 插入和接收数据

android - 在 SIM 上访问 SMS 消息

javascript - Javascript 中的回调 ~ 如何在函数完成后触发事件?