deq*_*c64 5 java android android-asynctask
我正在开发一个应用程序,它从网络中检索数据,将它们存储到设备然后读取它们.问题是,我在异步任务中得到我的数据..并且我的应用程序在尝试向用户显示数据之前不让任务完成..我已经尝试过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());
}
Run Code Online (Sandbox Code Playgroud)
此任务是我的自定义异步任务的一个实例:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道该怎么做......执行变得快而且得不到任何事情,因为我没有回复任何我猜.
onPostExecute(Result),在后台计算完成后在 UI 线程上调用。后台计算的结果作为参数传递到此步骤。
@Override
protected void onPostExecute(String result) {
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
508 次 |
最近记录: |