Desculpe usar o mesmo post para minha duvida, mais estou tendo o mesmo problema que o colega Andre_Lutz, e acredito que com o AsyncTask consiga resolver meu problema, mais eu não consigo fazer o método que estou querendo rodar no AsyncTask, alguém pode por favor me ajudar o que esta errado no código abaixo.
Este roda normal na versão 2.3
[code]private ArrayList GetSearchResultsTelefone() {
ArrayList results = new ArrayList();
DSRESTConnection conn = gc.getConnection();
TServerMethods1 serv = new TServerMethods1(conn);
TDataSet ds;
// ---------------------------------------
try {
ds = serv.ConsultaTelefoneCliente(AZClienteActivity.login
.toString().trim());
while (ds.next()) {
ListaTelefoneCliente sr2 = new ListaTelefoneCliente();
String concTelefone = ds.getValue("TELEFONE_FORMATADO")
.GetAsString();
String concLocal = ds.getValue("LOCAL").GetAsString();
sr2.setTelefoneformatado(concTelefone);
sr2.setLocal(concLocal);
results.add(sr2);
}
} catch (Exception e) {
e.printStackTrace();
}
return results;
}[/code]
Mais não roda na versão 4.0
Se eu colocar este codigo aqui
// captura a versão do android
int SDK_INT = android.os.Build.VERSION.SDK_INT;
// somente executar este código na versão android 4.0 acima
// 14 adiante é da versão 4.0
if (SDK_INT > 14) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
No oncreate ai funciona na versão 4.0, mais eu não queria usar este código. (Pode ser que se o André quiser talvez resolva o problema dele, mais acho que melhor usar o AsyncTask por isso to querendo mudar o método)
Bom ai tentei mudar o método para usar com AsyncTask só que não funciona, talvez pelo fato de estar errado a forma que tentei fazer, executa, mais não traz o resultado
Vejam
[code]private ArrayList GetSearchResultsTelefone() {
final ArrayList results = new ArrayList();
DSRESTConnection conn = gc.getConnection();
final TServerMethods1 serv = new TServerMethods1(conn);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
TDataSet ds;
ds = serv.ConsultaTelefoneCliente(AZClienteActivity.login
.toString().trim());
while (ds.next()) {
ListaTelefoneCliente sr2 = new ListaTelefoneCliente();
String concTelefone = ds.getValue("TELEFONE_FORMATADO")
.GetAsString();
String concLocal = ds.getValue("LOCAL").GetAsString();
sr2.setTelefoneformatado(concTelefone);
sr2.setLocal(concLocal);
results.add(sr2);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute();
return results;
}[/code]
Acho que é só erro de lógica no result, mais não conso saber a onde esta o problema.
Obrigado.