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

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

Войти
Регистрация
Восстановить пароль
 
Lost_Angel
1 / 1 / 0
Регистрация: 06.12.2011
Сообщений: 27
#1

Не запускается фоновый сервис через AlarmManager - Программирование Android

18.12.2016, 16:09. Просмотров 225. Ответов 0

Задача: запускать ежедневно в конце дня сервис, который собирает статистику и записывает ее в БД. Реализую, используя AlarmManager. Код активити:

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
public class MainActivity extends AppCompatActivity {
public DBHelper dbHelper;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    Intent alarm = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
    boolean alarmRunning = (PendingIntent.getBroadcast(getApplicationContext(), 0, alarm, PendingIntent.FLAG_NO_CREATE) != null);
    Calendar calendar = new GregorianCalendar();
    Calendar cal = Calendar.getInstance();
    calendar.set(Calendar.YEAR, cal.get(Calendar.YEAR));
    calendar.set(Calendar.MONTH, cal.get(Calendar.MONTH));
    calendar.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
 
    if(!alarmRunning) {
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarm, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
 
    }
 
}
Код ресивера:

Java
1
2
3
4
5
6
7
8
9
public class AlarmBroadcastReceiver extends BroadcastReceiver {
 
final String LOG_TAG = "myLogs";
 
@Override
public void onReceive(Context context, Intent intent) {
    Log.d(LOG_TAG, "TIME!");
    context.startService(new Intent(context, MyService.class));
}
Код сервиса:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    DBHelper dbHelper = new DBHelper(getApplicationContext());
    DBHelper.update_db(getApplicationContext(),dbHelper);
    return super.onStartCommand(intent, flags, startId);
}
 
@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
Проблема в общем-то в том, что сервис не запускается. Логи в AlarmBroadcastReceiver тоже не срабатывают.

P.S. в манифесте ресивер прописал

Добавлено через 26 минут
UPDATE: Разобрался. Нужно использовать флаг RTC.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2016, 16:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не запускается фоновый сервис через AlarmManager (Программирование Android):

AlarmManager - Программирование Android
Всем привет. Взял код AlarmManager отсюда. В свой проект добавил AlarmManagerBroadcastReceiver.java и код AlarmManagerActivity.java в свое...

AlarmManager - Программирование Android
Добрый вечер, как задать время вручную ? alarmManager.set(AlarmManager.RTC, System.currentTimeMillis(), pendingIntent);

AlarmManager + Notification - Программирование Android
Взялся за создания Нотификаций в определённое время. До этого такого ещё такого не делал, без помощи гугла не обошлось. В фрагменте...

AlarmManager и TextView - Программирование Android
Здравствуйте. Задача такая: есть AlarmManager и TextView. Как заставить AlarmManager отсчитывать время, заданное пользователем, и...

AlarmManager описание - Программирование Android
Здравствуйте. Подскажите хороший гайд по работе AlarmManager. А то в основном примеры толком не работающие.

Не работает AlarmManager - Программирование Android
Суть проблемы в том что когда заеться время уведомления в это время нет.... Тут код есть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2016, 16:09
Привет! Вот еще темы с ответами:

AlarmManager.setWindow - Программирование Android
Здравствуйте. Сделал alarmManager.setWindow(AlarmManager.RTC, calendar2.getTimeInMillis(), calendar2.getTimeInMillis(), ...

AlarmManager после перезагрузки - Программирование Android
По задумке AlarmManager должен отрабатывать раз в день. Включаю (сейчас 18-00): alarmManager.setRepeating( AlarmManager.RTC, ...

Использование AlarmManager+Notifications - Программирование Android
Народ, подскажите, пожалуйста, как правильно выводить уведомления (именно нотификейшены - не тосты) при выключенном приложении в заданное...

AlarmManager несколько расписаний - Программирование Android
Доброго времени суток. Помогите разобраться. Делаю вывод напоминаний по расписанию с помощью AlarmManager. Пользователь должен имеет...


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

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

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