gpt4 book ai didi

java - 如何让异步任务在 Android 中完成

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:04 24 4
gpt4 key购买 nike

我正在开发一个从网络检索数据、将它们存储到设备然后读取它们的应用程序。问题是,我在异步任务中获取数据。我的应用程序在尝试向用户显示数据之前不会让任务完成。我试过 task.get() 但没有结果(它就停在那里)。

这是我的任务:

public GetOptionsTask(XMLPortalGetOptions request) {
super(request);
}
protected void onCancelled(){
// TODO afficher message pas d'options sur le disque
}
@Override
public void handleError(Transaction transaction) {
// TODO afficher message pas d'options sur le disque
}
@Override
public void handleSuccess(Transaction transaction) {
saveOptions(transaction.getResponse());
request = null;
Log.d(OptionsManager.class.getName(), this.getStatus().toString());
}

此任务是我的自定义异步任务的一个实例:

protected BaseXMLTransaction request;

public abstract void handleError(Transaction transaction);
public abstract void handleSuccess(Transaction transaction);
public TransactionTask(BaseXMLTransaction request){
this.request = request;
}
@Override
protected Void doInBackground(Void... params) {
try {
Log.i(TransactionTask.class.getName(), "Doing in background");
SocketHandler.sendTransaction(this, request.getRequest());
} catch (SocketHandlerNotConfiguredException e) {
Log.e(TransactionTask.class.getName(), "SocketHandler's parameters were not set.");
}
return null;
}
@Override
public void transactionResult(Transaction transaction) {
switch (transaction.getCode()) {
case ERROR:
Log.e(TransactionTask.class.getName(), "ERROR !!!");
handleError(transaction);
break;
case NO_CLIENT:
Log.e(TransactionTask.class.getName(), "No Client Error");
handleError(transaction);
break;
case NO_SERVER:
Log.e(TransactionTask.class.getName(), "No Server Error");
handleError(transaction);
break;
case OLD_VERSION:
Log.e(TransactionTask.class.getName(), "Old Version");
handleError(transaction);
break;
case TIMEOUT:
Log.e(TransactionTask.class.getName(), "Transaction Timeout");
handleError(transaction);
break;
case SUCCESS:
Log.i(TransactionTask.class.getName(), "Transaction Success");
handleSuccess(transaction);
}
}

我真的不知道该怎么做...执行速度很快,get 什么也没做,因为我猜我不会返回任何东西。

最佳答案

onPostExecute(Result), invoked on the UI thread after the background computation finishes. The result of the background computation is passed to this step as a parameter.

@Override
protected void onPostExecute(String result) {

}

关于java - 如何让异步任务在 Android 中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35040889/

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