gpt4 book ai didi

android - 有没有办法让异步任务返回数据,或者能够发送一个带有方法的参数来调用

转载 作者:行者123 更新时间:2023-11-29 02:09:44 26 4
gpt4 key购买 nike

我有一个异步任务类,它充当 http 请求的包装器。我希望能够从 onPostExecute 返回数据或以某种方式指定一种方法将该数据发送到之后。我不能只是明确地调用函数,因为不同的响应必须转到不同的方法。也许如果有类似来自 php 的 call_user_function 的东西。

 private class Get extends AsyncTask<Void, Void, ContainerData> {

@Override
protected void onPreExecute() {
if (pbTitle != null) {
pbTitle.setVisibility(View.VISIBLE);
}
if (preText != null) {
tvUpdate.setText(preText);
tvUpdate.setVisibility(View.VISIBLE);
}
}

@Override
protected void onProgressUpdate(Void... progress) {

}

//this line will not work, the return type wants to be void
@Override
protected ContainerData onPostExecute(ContainerData obj) {
if (pbTitle != null) {
pbTitle.setVisibility(View.GONE);
}
if (preText != null) {
tvUpdate.setText("");
tvUpdate.setVisibility(View.GONE);
}
updateResponse(obj);

return obj;

}

@Override
protected ContainerData doInBackground(Void... params) {

ContainerData obj = null;

RestClient client = new RestClient(context);

for (Param param : methodParams) {

client.AddParam(param.getKey(), param.getValue());
}

client.setMethod(method);

try {
client.Execute();
} catch (Exception e) {
e.printStackTrace();
}

obj = client.getResponseObject();

return obj;
}

public String updateResponse(ContainerData responseObject) {


try {
// throws API exception
responseObject.checkSuccess();

String message = responseObject.getMessage();

if (message != null) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}

dataString = responseObject.getDataString();

} catch (ApiException e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}

return dataString;

}
}

最佳答案

您可以定义一个 ICommand 接口(interface):

public interface ICommand
{
void execute();
}

并为Get类创建一个新的属性

private ICommand command;
public void setCommand(ICommand command)
{
this.command = command
}

最后在创建实例时,设置命令如下:

setCommand(new ICommand() {

@Override
public void execute() {
// Your specific code
}
});

当然,如果需要ContainerData响应数据,可以修改ICommand接口(interface),让execute接收到ContainerData实例。

希望对您有所帮助! :)

关于android - 有没有办法让异步任务返回数据,或者能够发送一个带有方法的参数来调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com