Galera boa tarde, tudo bem?
Bom venho aqui pedir a ajuda de voces.
Criei uma aplicação que faz comunicação com um ws, esse webservice disponibiliza um json de uma base de dados pra mim com mais de 2.000 registro.
E na minha aplicação eu pego esses 2000 registro e gravo no banco de dados(sqlite), mas no momento da sincronização demora qse 15 minutos pra receber todos os registros. Estou usando thread no momento da sincronização e uso um framework de persistencia no android chamado droidpersistence.
Alguem poderia me ajudar como eu posso fazer pra minha aplicação ficar mais rapida, sera que o motivo pode ser esse framework que estou usando?
Desde ja agradeço. Abraços =]
Quando uso SQLite no Windows ou no Linux (mas não sei se é esse o caso no Android) eu uso, imediatamente depois de abrir a conexão com o banco, o seguinte comando: PRAGMA SYNCHRONOUS=NORMAL. (Nâo sei se você consegue, usando esse framework, mandar esse comando diretamente para o banco.)
Se eu não fizer isso, o SQLite fica muito lento para inserção de dados.(o default dele é PRAGMA SYNCHRONOUS=FULL).
http://www.sqlite.org/pragma.html#pragma_synchronous
entanglement, obrigado pela ajuda, ele estava com o mesmo problema que eu estou, so não entendi onde e como ele executou o PRAGMA SYNCHRONOUS=NORMAL, li o blog mas ele nao diz onde ele usou isso.
Vou estudar mais sobre esse problema, obrigado novamente. =]
Douglas, eu não sei se é fácil dar esse comando se você usar esse tal framework. Provavelmente o melhor resultado que você pode obter é criar uma transação, executar a importação desses 2000 registros dentro da transação, e então efetivar (“comitar”) a transação.
- Estou usando esse verbo “comitar”, obviamente sabendo que ele não existe em português, porque é o que as pessoas usam na prática. Ninguém diz “efetivar” uma transação
- pelo menos que eu conheça aqui.
entendi, mas vc, sem sem o framework teria como me mostrar como vc ussa esse comando pra mim ver como funciona mais ow menos. Obrigado =]
Para você mandar um comando para o banco que não seja um SELECT, INSERT ou outro comando padrão do SQL (como é o caso do PRAGMA), normalmente se usa um executeUpdate mesmo (no JDBC, método da interface Statement. )