Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

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

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

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

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

Выполнение действий приложения в ВК - Программирование Android
Каким образом можно взаимодействовать с игрой вк, через телефон с последующим получением данных? Задача стоит в подключении приложение к...

Выполнение действий при нажатии на представление в уведомлении - Программирование Android
Здравствуйте! Возник следующий вопрос: можно ли на нажатие в уведомлении на представление задать выполнение конкретного действия, а не...

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

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

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

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

3
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 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 / 4
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

Выполнение скрипта по расписанию - 1С Битрикс
Добрый день. Помогите решить проблему, необходимо каждый день, вечером, запускать определённый скрипт на сайте. Как это можно реализовать,...

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


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
16.08.2013, 12:14
Ответ Создать тему
Опции темы

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