Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Estouro de memória ao carregar spinner

Eu estava pensando em uma maneira de diminuir o acesso a banco esses dias.

Ainda não fui atras então não sei se estou falando besteira mas teria que ver se da pra carregar todos os elementos num List<objeto> e usar alguma propriedade pra fazer o filtro. algo tipo List<objeto>.search("texto").

posso estar viajando mas se der pra fazer assim deve melhorar bastante a performance.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/2/5 Rebert Tomaz Aquino <reberttomaz@gmail.com>
a paginação complica, pois não tenho como paginar as cidades do estado.. pelo menos não posso . rss

eu tb pensei em filtrar pela letra.. acho que funciona..  apesar de aumentar a consulta ao banco.. 



Em 5 de fevereiro de 2013 13:44, Maicon Strey <mstrey@gmail.com> escreveu:

Eu tive o mesmo problema e resolvi da seguinte forma:
Ao carregar a tela, não exibo nenhuma cidade.
Coloquei um campo para filtro no topo da tela e só passo a mostrar cidades quando o usuário digita a 4 letra (sem espaço) no filtro.
com isso evito de mostrar todos os são alguma coisa.

Tenta fazer algo nesse sentido que vai ficar bem melhor.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/2/5 Diogo Henrique <diogjp10@gmail.com>
Você está usando AsyncTask ?

Diogo Henrique
Rede Sociais: 






Em 5 de fevereiro de 2013 11:07, marcelo yonamine <yonamine60@gmail.com> escreveu:

Deveria existir um modo de paginação dos resultados na api (http://aplicacoes.mds.gov.br/sagi/simulacao/rebert/estado_municipio/lista_municipio.php?estado=), por exemplo um intervalo de 20 em 20.

Em 5 de fevereiro de 2013 11:52, Rebert Tomaz Aquino <reberttomaz@gmail.com> escreveu:

Bom dia, desculpem meu primeiro email já ser uma dúvida...

seguinte, meu programa esta consumindo muita memória e parando o aplicativo.. ele dá estouro de memória quando está carregando a lista de cidades.. se for um estado com pouca cidade vai tranquilo, mas quando puxa SP ou MG, é certeza de travar.



alguem pode me ajudar?


=================================== código ==========================================


public void carregamunicipios(String estado) {
System.gc();
municipios.clear();
ibges.clear();
municipios.add("Escolha");
ibges.add("0");
// preenche os municipios
+ estado;

// verifica a rede
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// retorno = retorno+"rede OK";
URL url2 = null;
try {
url2 = new URL(caminho_url);
URLConnection yc2 = url2.openConnection();
BufferedReader in2 = new BufferedReader(
new InputStreamReader(yc2.getInputStream()));
String inputLine2 = "", conteudo, nome, ibge="0";
int pos_inicio = 0, pos_fim=0, tamanho_conteudo = 0;

while ((inputLine2 = in2.readLine()) != null) {
conteudo = inputLine2;
//Log.d("conteudo", "--->: " + conteudo);
tamanho_conteudo = conteudo.length();
//Log.d("tam conteudo", "--->: " + tamanho_conteudo);
while (tamanho_conteudo >= 3) {
pos_inicio = conteudo.indexOf("<municipio>");
pos_fim = conteudo.indexOf("</municipio>");
nome = conteudo.substring(pos_inicio+11, pos_fim);
municipios.add(nome);
pos_inicio = conteudo.indexOf("<ibge>");
pos_fim = conteudo.indexOf("</ibge>");
ibge = conteudo.substring(pos_inicio+6, pos_fim);
ibges.add(ibge);
conteudo = conteudo.replaceFirst("<municipio>"+nome+"</municipio>","");
conteudo = conteudo.replaceFirst("<ibge>"+ibge+"</ibge>","");
//Log.d("conteudo NOVO", "--->: " + conteudo);
tamanho_conteudo = conteudo.length();
//Log.d("TAM CONT RESTO", "--->: " + tamanho_conteudo);
} System.gc();
// arruma no caso de brasilia  tamanho = 1
//Log.d("TAM municipioe", "--->: " + municipios.size());
if (municipios.size()==2){
// brasilia
ibges.add(ibge);
}
//----------------------------
}
in2.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ------------------------------------------
// ------------------------------------------
} else {
retorno = retorno + "Sem conexão a rede";
}
// -----------------------------
}




public void listamunicipios() {
//Identifica o Spinner no layout
  spn2 = (Spinner) findViewById(R.id.autoCompleteMunicipio);
  //Cria um ArrayAdapter usando um padrão de layout da classe R do android, passando o ArrayList nomes
  ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, municipios);
  ArrayAdapter<String> spinnerArrayAdapter2 = arrayAdapter2;
  spinnerArrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_item);
  spn2.setAdapter(spinnerArrayAdapter2);
                         
  //Método do Spinner para capturar o item selecionado
 
  spn2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {     
  @Override
  public void onItemSelected(AdapterView<?> parent, View v, int posicao, long id) {
  //pega nome pela posição
  municipio = parent.getItemAtPosition(posicao).toString();  
  ibge = ibges.get(posicao).toString();
  //Log.d("municipio", "--->: " + municipio);
  //Log.d("ibge", "--->: " + ibge);
  //imprime um Toast na tela com o nome que foi selecionado
  if (municipio != "Escolha"){      
  //Toast.makeText(PesquisaUm.this, "Municipio Selecionado: " + municipio, Toast.LENGTH_LONG).show();
  }
  }
 
@Override
  public void onNothingSelected(AdapterView<?> parent) {
 
  }
  });
}




--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Rebert Tomaz

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário