我有一个被指定使用Odata服务的类,所以我用异步任务创建了4个不同的类,但是我不确定它们是否正确创建(正确),
所以我创建了我的主类,它是更新活动,这一个启动一个AsyncTask,并在后执行方法的这个类的末尾弹出一个进度对话框("连接到服务器") ,我想开始我的后续AsyncTasks,但我没有得到 "我已经尝试了一些我在这里找到的解决方案,例如在执行后调用类调用异步测试,但我没有取得成功",任何人都可以提供帮助吗?"
"我想我以错误的方式创建了我的异步类,所以任何人都可以给我一个方向"
更新活动:
atualiza_base = (Button) findViewById(R.id.update_button);
atualiza_base.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new callService().execute();
}
});
}
public class callService extends AsyncTask<Object, Object, String> {
protected void onPreExecute() {
progress = ProgressDialog.show(Atualizar_Dados.this, "Aguarde...", "Conectando ao SMP", true, true);
}
protected String doInBackground(Object... params) {
return URL;
}
protected void onPostExecute(String result) {
progress.dismiss();
AtualizaClientes atualizaClientes = new AtualizaClientes();
atualizaClientes.callServiceClientes.execute();
}
}
我的4个AsyncTasks中的一个是相同的,只有不同的服务......
public class AtualizaClientes extends Atualizar_Dados {
ClienteDAO sqlObjCliente;
private ProgressDialog progressC;
ArrayList<OEntity> zmob_kunnr;
ListView listCliente;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sqlObjCliente = new ClienteDAO(AtualizaClientes.this);
class callServiceCliente extends AsyncTask<Void, Void, ArrayList<OEntity>> {
protected void onPreExecute() {
progressC = ProgressDialog.show(AtualizaClientes.this, "Aguarde...", "Atualizando Clientes", true, true);
}
public ArrayList<OEntity> doInBackground(Void... params) {
ODataConsumer ccli = ODataJerseyConsumer.create(URL);
List<OEntity> listEntitiesKunnr = ccli.getEntities("ZMOB_KUNNRSet").execute().toList();
System.out.println("Size" + listEntitiesKunnr.size());
for (OEntity entityKunnr : listEntitiesKunnr) {
zmob_kunnr.add(entityKunnr);
}
return zmob_kunnr;
}
@SuppressLint("DefaultLocale")
protected void onPostExecute(ArrayList<OEntity> kunnr) {
super.onPostExecute(kunnr);
try {
sqlObjCliente.open();
sqlObjCliente.deleteCliente();
for (int k = 0; k < zmob_kunnr.size(); k++) {
sqlObjCliente.insertCliente(zmob_kunnr.get(k).getProperty("Kunnr").getValue().toString().toUpperCase(),
zmob_kunnr.get(k).getProperty("Name1").getValue().toString().toUpperCase());
}
sqlObjCliente.close();
} catch (Exception e) {
}
progressC.dismiss();
// new callServiceMaterial().execute();
//new callServiceProblema();
}
}
}
任何帮助将不胜感激,谢谢......
答案 0 :(得分:0)
要从另一个不同类的AsyncTask调用AsyncTask,只需创建一个简单的接口并管理AsyncTask调用。接口是很好的解决方案。