$ dbc
возвращает false. В вашем запросе есть ошибка:
Пользователь SELECT. *, Профиль. * - Вы не присоединяетесь к профилю в любом месте. FROM users INNER JOIN contact_info ON contact_info.user_id = users.user_id WHERE users.user_id = 3 ");
Исправление для этого вообще описано Raveren.
Да, вам нужно посмотреть на AlarmManager , чтобы настроить повторный «Тревога». Это лучше для аккумулятора на устройстве, так как в отличие от обслуживания он не работает постоянно в фоновом режиме. Тревога запускает приемник вещания , который будет выполнять ваш пользовательский код.
В качестве окончательной заметки - есть значения перечислимого времени для синхронизации сигнала тревоги, включая ежедневные, половинные сутки и многие другие хотя вы можете просто установить фактическое значение.
Хороший пример можно найти в следующем сообщении SO:
Пример диспетчера аварийных сигналов
Обновить
Новые функции были добавлены в Android. Если вы читаете это, я бы посоветовал вам теперь взглянуть на GcmNetworkManager . Это оптимизирует время работы от батареи и работает до леденца. Для Lollipop вы можете использовать JobScheduler . Я бы посоветовал использовать эти классы над AlarmManager.
В качестве альтернативы я сравниваю текущую неделю:
Calendar cal = Calendar.getInstance();
int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR);
SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0);
int weekOfYear = sharedPreferences.getInt("weekOfYear", 0);
if(weekOfYear != currentWeekOfYear){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("weekOfYear", currentWeekOfYear);
editor.commit();
// Your once a week code here
}
Я не сторонник этого лучше, чем решение Alarm. Я просто показываю другой подход.
Я думаю, что лучше всего подходит GcmNetworkManager . В основном у него есть все, что вам нужно от AlarmManager плюс настойчивость, поэтому после перезагрузки можно продолжить выполнение.
Пример:
PeriodicTask task = new PeriodicTask.Builder()
.setService(MyTaskService.class)
.setTag(TASK_TAG_PERIODIC)
.setPeriod(5L)
.build();
mGcmNetworkManager.schedule(task);
GcmNetworkManager
. Я поддержал кстати.
– Graham Smith
29 February 2016 в 23:41