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

AlarmManager и Service or Receiver? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android ExpandableListView - cannot inflate class http://www.cyberforum.ru/android-dev/thread1609460.html
Есть layout, на нем размещен ExpandableListView. Когда к нему применяешь свою тему оформления, выскакивает ошибка - cannot inflate class ExpandableListView. Если применить к этому лейауту тему, к...
Программирование Android WebView и реализации tel: Приложение разрабатывается в android studio. Используется компонент WebView для отображения одного сайта(при запуске открывается именно он). На сайте есть ссылки типа tel:"номер", но Приложение их... http://www.cyberforum.ru/android-dev/thread1609232.html
Слушатель актера Программирование Android
Написал игру под фреймворком libGdx и столкнулся с проблемой, что на одном размере экрана (480х800) актеры появляются и слушатель к ним работает по нажатию на них. А вот при иных размерах экрана все...
Формула масштабирования Программирование Android
Добрый вечер! Столкнулась с такой проблемой: нужно знать, как масштабировалась картинка, какие имеет размеры, но не получается их получить. Решила сделать подгонкой, получились очень забавные цифры....
Программирование Android Обмен данными между Activity http://www.cyberforum.ru/android-dev/thread1609020.html
Между Activity делал обмен через Intent, но передает пустой строку. второй активити package com.androidexample.httpgetexample; import android.app.Activity; import android.os.Bundle; import...
Программирование Android Неполадки с сокет-соединением Здравствуйте, господа! Есть сервер на VB, который должен принимать/отправлять сообщения Андроиду. Пока что могу только отправлять сообщения от клиента серверу и то ограниченные (кириллица не... подробнее

Показать сообщение отдельно
TheCollapse
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 47
Завершенные тесты: 1

AlarmManager и Service or Receiver? - Программирование Android

11.12.2015, 21:56. Просмотров 266. Ответов 1
Метки (Все метки)

Целый день искал, но нифига не нашел( то что нашел помогло тоолько частично).
Суть вот в чем, у меня есть AlarmManeger как уже всем и так ясно, он работает прекрасно без преувеличения, реализован с помощю BroadcastReceiver. Вот собствено сам код:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
    public static String ONE_TIME = "onetime";
    public static final String NOTIFICATION_TITLE = "notification_title";
    public static final String NOTIFICATION_DETAILS = "notification_details";
    public static final String NOTIFICATION_REQUEST = "notification_request_code";
 
 
    @Override
  public void onReceive(Context context, Intent intent) {
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "com.something.alarm");
            //Acquire the lock
            wl.acquire();
            //You can do the processing here update the widget/remote views.
            Bundle extras = intent.getExtras();
            StringBuilder msgStr = new StringBuilder();
            String title = extras.getString(NOTIFICATION_TITLE);
            String details = extras.getString(NOTIFICATION_DETAILS);
            int reqCode = extras.getInt(NOTIFICATION_REQUEST);
            msgStr.append("One time Timer : ");
            Utils.generateNotification(context, title, details, reqCode);
            Format formatter = new SimpleDateFormat("hh:mm:ss a");
            msgStr.append(formatter.format(new Date()));
 
            Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
 
            //Release the lock
            wl.release();
    }
 
 
    public void CancelAlarm(Context context, int requestCode)
    {
        Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
        PendingIntent sender = PendingIntent.getBroadcast(context, requestCode, intent, 0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(sender);
    }
    public void setOnetimeTimer(Context context, Calendar d, String title, String details, int requestCode){
        AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
        intent.putExtra(ONE_TIME, Boolean.TRUE);
        intent.putExtra(NOTIFICATION_TITLE, title);
        intent.putExtra(NOTIFICATION_DETAILS, details);
        intent.putExtra(NOTIFICATION_REQUEST, requestCode);
        Log.i("setOnetimeTimer",  "  "+requestCode);
 
        PendingIntent pi = PendingIntent.getBroadcast(context, requestCode, intent, 0);
 
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.YEAR, d.get(Calendar.YEAR));
        calendar.set(Calendar.MONTH, d.get(Calendar.MONTH));
        calendar.set(Calendar.DAY_OF_MONTH, d.get(Calendar.DAY_OF_MONTH));
        calendar.set(Calendar.HOUR_OF_DAY, d.get(Calendar.HOUR_OF_DAY));
        calendar.set(Calendar.MINUTE, d.get(Calendar.MINUTE));
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.AM_PM, d.get(Calendar.AM_PM));
        am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);
    }
}
Как уже говорил все работает, так как надо, выводит сообщение в нужное время, то когда я завершают процесс через деспетчер задач то сообщения больше не показываются. Я отлично знаю, что это работает таким образом, как сделать так чтобы после закрытия он продолжал свою работу? Не лучше ли будет использовать Сервис с START_STICKY (хотя я пробовал и оно мне не работало )?
Я не хочу сделать вечную службу, только чтобы после закрытия все работало, поскольку большинство людей так закрывают свои программы (сейчас не об этом), чтобы возможность закрытия (точнее остановки) из "запущены службы" так и оставалась.
Подскажите пожалуйста буду очень благодарен. По возможности ссылки на решения это проблемы, если я плохо искал, или лучше на моем примере что поправить и т.д.
Благодарю за понимание!!!

Добавлено через 9 часов 49 минут
up?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru