У меня есть задача, которая запускается каждые 30 секунд в Android с помощью ScheduledExecutorService. Он выполняет поток пользовательского интерфейса и работает нормально.
Теперь мне нужно, чтобы задача связывала сервис, но когда я добавляю вызов метода bind, задача не запускается каждые 30 секунд;он запускается всегда и приводит к накладным расходам на приложение.
Это код моей задачи:
Runnable consumirDatosDinamicosTask = () -> {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (mapContenedorDatosInstalacionesDTO != null && itemsGrillaAdapter != null) {
ContenedorInstalacionDTO datosInstalacion = mapContenedorDatosInstalacionesDTO.get(idInstalacion);
if(datosInstalacion != null){
PopuladorInstalacionGrid.popularParametrosDinamicos(instalacionGrilla, itemsGrillaAdapter,
datosInstalacion.getInversoresDTO(), datosInstalacion.getInversoresCargadoresDTO(), datosInstalacion.getReguladoresDTO());
}
}
itemsGrillaAdapter.notifyDataSetChanged();
//Here is the problem. If i uncomment bindearServicio(), the task doesn't run every 30 seconds; it runs always and It produces an overhead.
//bindearServicio();
}
});
};
ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
scheduleTaskExecutor.scheduleAtFixedRate(consumirDatosDinamicosTask, 0, 30, TimeUnit.SECONDS);
void bindearServicio() {
unbindearServicio();
if (!isBinded) {
bindService(new Intent(this, InstalacionesService.class), serviceConnection, Context.BIND_AUTO_CREATE);
isBinded = true;
}
}
void unbindearServicio() {
if (isBinded) {
unbindService(serviceConnection);
isBinded = false;
}
}
Может ли кто-нибудь помочь мне увидеть, что я делаю неправильно,или скажите, есть ли лучший способ привязывать сервис каждые 30 секунд?
Заранее спасибо:)