Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
1

Как запускать задачу по рассписанию? Как отслеживание изменения своей БД SQLite?

11.03.2013, 21:05. Просмотров 1089. Ответов 6
Метки нет (Все метки)

Есть БД SQLite, в базе есть таблица с полями о времени запуска будильника.
Например, пользователь настроил будильник на 7 утра - мы сделали запись в БД с полем типа time на 7 утра.
Так вот как правильно будет запустить мелодию именно в 7 утра?
Дальше, время запуска будильника может быть изменено, например пользователем или BroadcaastReceiver'ом (изменение записи в SQLite), так вот как отследить в сервисе что запись в базе была изменена?

Как предполагаю я, - запускается сервис, в сервисе нужно как-то отслеживать/перехватывать изменения времени запуска будильника в SQLite и ставить задачу на запуск будильника (Timer shedule, AlarmManager) ??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 21:05
Ответы с готовыми решениями:

Как реализовать отслеживание изменения даты в android?
В БД есть записи которые должны в программе изменятся в зависимости от текущей...

Как запускать определенный тип файлов со своей программы?
я хочу в своей пргоге открывать файлы разных форматов, ну верней мне нужно,...

Варианты защиты своей пасеки (отслеживание ульев)
Здравствуйте! Есть пасека, примерно 40 улей. Хочу в несколько из них положить...

Файл cookies.sqlite не sqlite на самом деле, или как его открыть
хочу прочитать куки браузеров (это не противозаконно) оперу сделал, хром...

SQLite for Excel или как выгрузить данные в SQLite
Здравствуйте! Мне необходимо написать макрос для выгрузки данных из excel в...

6
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 13:15 2
http://developer.android.com/referen...tResolver.html

Добавлено через 2 минуты
смотрите метод registerContentObserver
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
12.03.2013, 15:49  [ТС] 3
V0v1k, спасибо!
Я тоже уже смотрел в сторону Observer, но не смог понять как его прикрутить в моем случае. Так вот registerContentObserver требует на вход Uri, но где его взять, это же не контент провайдер.

Я думаю, может вот по такой схеме: есть основная статик функция которая проверяет и напрямую запускает будильник, а все остальные могут вызывать функцию в любой момент, т.е. для инициализации или изменения запуска будильника, достаточно вызвать эту функцию.

Примерно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class alarmClass{
    private static Thread th = null;
    
    public static void startAlarm(){
        if(th != null){
            th.interrupt();
        }
        
        th = new Thread(new Runnable(){
            public void run(){
                //check sql time
                //if time is ok start alarm
                //else sql = SELECT time FROM alarms WHERE ...
                //and Thread.sleep sql_time-System.currentTimeMillis()
                //continue loop
            }
        });
        
        th.start();
    }
}
 
public class myService extends Service{
    public void onCreate() {
        //start and check alarm: alarmClass.startAlarm();
    }
}
 
 
public class myReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        //sql_update = UPDATE alarms SET time = "new_time" WHERE ...
        //start and check alarm: mainClass.startAlarm();
    }
}
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 16:04 4
у Cursor'a тоже есть registerContentObserver.

Добавлено через 5 минут
если не делаете контент провайдера, значит изменять можете только вы, если изменять можете только вы, значит можете отследить сами когда вы это делаете.
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
12.03.2013, 16:45  [ТС] 5
у Cursor'a тоже есть registerContentObserver, но а как его использовать?
при sql запросе мы получаем Cursor, а дальше что? в ходе работы приложения может быть несколько запросов/курсоров.

В приложении нет контент провайдера, только само приложение изменяет данные.. я написал пример как я предполагаю отслеживать/уведомлять изменения и запускать будильник. Не тот подход?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 17:00 6
я не понял вашего описания. ресивер хотите использовать? сойдет.
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
12.03.2013, 18:45  [ТС] 7
Нет. в данном примере, ресивер изменяет время запуска будильника и вызывает функцию которая в отдельном потоке проверяет время запуска будильника и засыпает до его включения.
0
12.03.2013, 18:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 18:45

как записывать игры на не чипованный Playstation 2 или как их запускать!
как записывать игры на не чипованный Playstation 2 или как их запускать! Я не...

Отслеживание изменения файлов.
Подскажите пожалуйста, как можно отследить время изменения файлов в папке,...

Отслеживание изменения переменной
Есть переменная, допустим int a;, хочу в логике работы софта сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru