Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
qvazar
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 37
#1

Выполнение действий по расписанию - Программирование Android

13.08.2013, 17:05. Просмотров 3257. Ответов 3
Метки нет (Все метки)

В моей программе пользователь может добавлять различные события и устанавливать время для них. Данные, записанные пользователем, заносятся в БД. На одно время может быть записано несколько событий, в таком случае они должны будут исполнены последовательно друг за другом. Собственно, вопрос - как лучше всего сделать так, чтобы программа выполняла определенные действия по расписанию?
Пока одна из идей - завести переменные, в которые добавлять время ближайших событий из БД, затем создать новый поток и сделать в нем что-то типа будильника, который по наступлению времени ближайшего события будет его выполнять.
http://www.cyberforum.ru/android-dev/thread1728644.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 17:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выполнение действий по расписанию (Программирование Android):

Выполнение действий при нажатии на представление в уведомлении
Здравствуйте! Возник следующий вопрос: можно ли на нажатие в уведомлении на...

Получение данных по расписанию
Немного не могу решить, как это реализовать. В общем, при первом запуске...

Запускать будильник по расписанию (Андроид 2.3.4)
Мне надоело устанавливать будильник на мобиле(Fly Blackrird) в ручную Я...

Выполнение действий по расписанию, в определенное время
как сделать что бы прога отслеживала время и если наступило к примеру 21:00...

Выполнение по расписанию.
Уважаемые, возникла не то, чтобы необходимость, но очень хотелось бы данное...

3
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
14.08.2013, 12:48 #2
Я бы запустил сервис в background'е, который каждые N минут будет просматривать базу на предмет ближайших событий. Если событие произойдёт через M минут (M<N), сервис создаёт Runnable, где описаны все необходимые действия по событию (если необходимо и старт нового потока) и передаёт это в Handler с задержкой M. Важный момент, если пользователь может создать событие, которое произойдёт ранее, чем через N минут, то сервис лучше перезапустить (стерев все Callbacks из Handler'а).
1
qvazar
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 37
15.08.2013, 23:05  [ТС] #3
Спасибо за совет, не знал про сервисы, удобная штука оказывается)
Есть еще несколько проблем:
Мое приложение постоянно в отдельном потоке общается по сети с другой программой. Поток создается в главной активности. При переходе пользователем на другие активности он будет продолжать работу?
Когда наступает определенное событие, мне нужно будет оповестить сетевой поток о том, что событие произошло, и передать ему определенные данные. Как лучше это сделать?
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
16.08.2013, 12:14 #4
qvazar, если вы запустили поток (неважно где) и он не является демоном (по умолчанию так оно и есть), то поток завершится либо когда он выполнит все свои действия, либо когда его прервут. Посему он будет работать и при переходе на другие активности, и даже после выхода из приложения.
Теперь что касается событий: как таковых оповестителей не предусмотрено. Но вам ничего не мешает сохранить ссылку на поток и вручную, организовав нечто подобное следующему:
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
private int eventType;
private Object data;
 
public void eventObject(int eventType, Object data) {
    this.eventType = eventType;
    this.data = data;
}
 
@Override
public void run() {
    
    while (true) {
    
        // общение по сети с другой программой
        
        if (eventType==someEvent) {
            toDoSomething(data);
        }
        
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            return;
        }
    
    }
 
}
оповещать поток.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 12:14
Привет! Вот еще темы с решениями:

Выполнение задачи по расписанию
Добрый день! Имеется скрипт который выполняет определенную функцию по...

Выполнение действие по расписанию
Есть некая программа, которая должна выполнятся 24/7. Мне нужно выполнить некое...

Выполнение скрипта по расписанию
Добрый день. Помогите решить проблему, необходимо каждый день, вечером,...

Выполнение кода по расписанию
Подскажите пожалуйста, как реализовать такие задержки, к примеру я хочу чтобы...


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

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

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