Hi. I implemented a process that do multiple web service request to fill the tables one by one, but I'm having some problems for example:
- The same process on my Razr(Android 4.0.4) the process completed normally, but in a smartphone with Android(2.2) for example, I get errors like 'SocketTimeout', connections problems and exceptions (FutureTask). The process: on my doInBackground I'm calling all the requests: @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub Cliente cliente = new Cliente(); cliente.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); cliente.importarDados(); TabelaPreco tabelaPreco = new TabelaPreco(); tabelaPreco.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); tabelaPreco.importarDados(); ClienteEndereco clienteEndereco = new ClienteEndereco(); clienteEndereco.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); clienteEndereco.importarDados(); Comprador comprador = new Comprador(); comprador.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); comprador.importarDados(); ProdutoPreco produtoPreco = new ProdutoPreco(); produtoPreco.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); produtoPreco.importarDados(); Embalagem embalagem = new Embalagem(); embalagem.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); embalagem.importarDados(); Produto produto = new Produto(); produto.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); produto.importarDados(); Grupo grupo = new Grupo(); grupo.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); grupo.importarDados(); FormaPagamento formaPagamento = new FormaPagamento(); formaPagamento.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); formaPagamento.importarDados(); Cidade cidade = new Cidade(); cidade.setWsRepresentante(getSharedPreferences("PREFS_PRIVATE", MODE_PRIVATE).getInt("representante", 0)); cidade.importarDados(); return null; } This importarDados() call the super method from each class that execute this process that fill the table with the results: DataBase = new DadosBD(Singleton.getContextoAplicacao()); SoapObject request = new SoapObject(this.getWsNameSpace(), this.getWsNomeMetodo()); request.addProperty("representante", WsRepresentante); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.implicitTypes = false; envelope.setOutputSoapObject(request); HttpTransportSE httpTransport = new HttpTransportSE(this.getWsUrl()); httpTransport.call(this.getWsNameSpace() + "" + this.getWsNomeMetodo(), envelope); SoapObject result = (SoapObject) envelope.getResponse(); if (result != null) { int resultCount = result.getPropertyCount(); if(resultCount > 0){ SoapObject objResult = new SoapObject(); SoapObject objSoap = new SoapObject(); objResult = (SoapObject) result.getProperty(1); if(objResult.getPropertyCount() > 0){ objSoap = (SoapObject) objResult.getProperty(0); int propertyResultCount = objSoap.getPropertyCount(); if (propertyResultCount > 0){ DataBase.BeginTransaction(); SQLiteStatement stmtInsert = DataBase.getDataBase().compileStatement(DataBase.ExecInsertBuilder(Tabela, TabelaColunaComposta)); SQLiteStatement stmtSelect = DataBase.getDataBase().compileStatement(DataBase.ExecSelectBuilder(false, Tabela, TabelaSelecaoArgumentos, TabelaSelecao, TabelaGroupBy, TabelaHaving, TabelaOrderBy, "1")); SQLiteStatement stmtUpdate = DataBase.getDataBase().compileStatement(DataBase.ExecUpdateBuilder(Tabela, TabelaColunaComposta, TabelaWhereArgumentos)); this.Dados = new ContentValues(); for (int currentProperty = 0; currentProperty < propertyResultCount; currentProperty++) { SoapObject obj = (SoapObject) objSoap.getProperty(currentProperty); int attributeResultCount = obj.getPropertyCount(); for(int index = 0; index < attributeResultCount; index++){ PropertyInfo pi = new PropertyInfo(); obj.getPropertyInfo(index, pi); stmtInsert.bindString(index + 1, ((pi.getValue().toString().equals("anyType{}")?(""):(pi.getValue().toString())))); stmtUpdate.bindString(index + 1, ((pi.getValue().toString().equals("anyType{}")?(""):(pi.getValue().toString())))); this.Dados.put(pi.name.toString(), ((pi.getValue().toString().equals("anyType{}")?(""):(pi.getValue().toString())))); } for (int i = 0; i < this.getCamposPK().length; i++) { stmtSelect.bindString(i + 1, this.Dados.get(CamposPK[i].toString()).toString()); } if(!(stmtSelect.simpleQueryForLong()==1)){ stmtInsert.executeInsert(); }else{ stmtUpdate.execute(); } } DataBase.SetTransaction(); DataBase.EndTransaction(); } } } } *How can I implement this process using AsyncTask? I need to create one AsyncTask to each class?* This requests doesn't need to be executed paralelly... *How can I improve the security of this process?* * * Thanks in advance. -- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.