Galera, precisando da ajuda de vocês.
Um serviço no app que roda em segundo plano em uma aplicação de força de vendas.
Tenho classe que estende um BroadcastReceiver, para verificar se o serviço está ativo e fazer os devidos tratamentos e tenho uma classe que estende Service e que implemente os métodos:
- GoogleApiClient.ConnectionCallbacks
- GoogleApiClient.OnConnectionFailedListener
- LocationListener
Isso tudo para obter a localização do usuário de tempos em tempos (a cada 1 minuto) onde o servidor solicita o envio das coordenada pelo firebase cloud message (FCM).
Depois de obter todas as lozalizações dentro deste 1 minuto, preciso enviar para um servidor (utilizando a biblioteca ion).
Meu problema é o seguinte, deixo a localização gravada num segundo banco de dados da aplicação, pois, quando o usuario está utilizando a aplicação (emitindo pedido por exemplo) e o serviço tenta gravar a localização esta dando exceção abaixo, pode ser porque o banco foi aberto duas vezes?
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)
Tentei utilizar o SharedPreferences, mais é que antes de enviar a localização dentro do 1 minutos vão ter X coordenadas gravadas e eu não tenho ideia de como fazer isso no SharedPreferences.
Daria para garvar em um Arraylist? Creio que corro o risco de perder as informações
Qual a melhor forma de fazer isso, utiliziar um segundo banco, sharedPreferences ou arraylist? Ou tem outra maneira melhor de fazer isso
Sem falar que durante o dia o usuário pode ficar sem serviço dados por estar em um cidade com cobertura ruim da operadora, podendo não enviar a cada um minuto a localização, mais mesmo assim ao final do dia preciso que envie todas as localizações capturadas.
E sobre logica que utilizando, seria a forma mais correta? Está no dicionario de boa praticas?
Desde já obrigado, valeu galera.