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

Alarm broadcastIntent убивается через какое-то время - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android The release() call is not always reached android http://www.cyberforum.ru/android-dev/thread1354678.html
Здравствуйте! У меня в появляется предупреждение "the release call is not always reached android" при использовании - wl.release();, по первому варианту. Вариант 1 PowerManager pm =...
Программирование Android Как установить пин для соединения WiFi Direct (WifiP2pConfig.wps.pin игнорируется) Имею устройство в котором настроен WiFi Direct и установлен пинкод 00000000 и вот такой код: WifiP2pConfig config = new WifiP2pConfig(); config.deviceAddress = assetWifiP2pDevice.deviceAddress;... http://www.cyberforum.ru/android-dev/thread1354561.html
Программирование Android Кастомный ArrayAdapter для Spinner
Создал свой адаптер. Привязал его к списку Spinner. Получил идентификатор выбранной записи. Ну вроде бы как получается в каждом элементе списка хранится объект. Теперь по этому идентификатору мне бы...
Рисование в элементе view Программирование Android
Можно ли использовать canvas внутри какого-либо view? Находил примеры, когда можно рисовать примитивы на всём экране, при этом нельзя использовать контролы (кнопки, текст, прочее).
Программирование Android Ресивер ответа абонента, которому звоним http://www.cyberforum.ru/android-dev/thread1354393.html
Добрый день. В моем телефоне на android нету функции автозаписи телефонных разговоров. Написал собственное приложение, но оно работает пока что только на входящие вызовы. При исходящем вызове мне...
Программирование Android Как сгруппировать XML файлы по папкам? При создании приложения получилось много XML файлов, в основном все файлы View элементов например - пункт списка, layout файлы, файлы диалога и т.д. Все они в папке layout и с искать их не очень... подробнее

Показать сообщение отдельно
Giekelberri
0 / 0 / 0
Регистрация: 16.01.2015
Сообщений: 9

Alarm broadcastIntent убивается через какое-то время - Программирование Android

16.01.2015, 09:47. Просмотров 894. Ответов 18
Метки (Все метки)

Привет! Я разрабатываю приложение похожее на будильник. Я использую Android 4.2.2.

Проблема заключается в том, что после некоторого времени (около 1 - 2 часов) alarm pendingIntent убивается кем-то и будильник не срабатывает.

Последовательность шагов следующая
1. Вызов SetAlarm() и установка на срабатывание через 2 часа.
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intentToFire, 0); alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, alarmIntent);
2. Я вижу, что Alarm установлен через "adb shell dumpsys alarm". +1h59m осталось
3. После 10 минут... я вижу, что Alarm установлен через "adb shell dumpsys alarm".+1h49m осталось
4. После 20 минут... я вижу, что Alarm установлен через "adb shell dumpsys alarm".+1h39m осталось
5. И так далее...
6. Но после гле-то 1-2 часов (время варьируется) Oooops. Я больше не вижу alarm pendingIntent в списке "adb shell dumpsys alarm".

Android родной будильник работает нормально.

Код:
Broadcast Receiver, зарегистрированный в AndroidManifest.xml

XML
1
2
3
4
5
6
7
8
9
10
    <receiver android:name=".BrdRcvr" android:exported="true">
        <intent-filter>        
            <action android:name="action.alarm.RI" />
            <action android:name="action.alarm.ERT0" />
            <action android:name="action.alarm.ERT1" />
            <action android:name="action.alarm.ERT2" />
            <action android:name="action.alarm.ERT3" />
            <action android:name="action.alarm.ERT4" />
        </intent-filter>
    </receiver>
Функция установки Alarm'а:

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
public static void setAlarmRI(Context context) {
    //Read time from preferences
    SharedPreferences appPref = 
            context.getSharedPreferences(SettingsActivity.APP_PREF, Context.MODE_PRIVATE);
 
    int timeToAlarmMs = Integer.valueOf(appPref.getInt(SettingsActivity.APP_PREF_RI, 0)) * 1000; //[ms]
 
    //!getSystemService must be called after onCreate() 
    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    long time = SystemClock.elapsedRealtime() + timeToAlarmMs * 60; //[min]
 
    //Intent
    Intent intentToFire = new Intent(context, BrdRcvr.class);
    intentToFire.setAction("action.alarm.RI");
 
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 
            0, intentToFire, 0/*flags*/);
 
    if (timeToAlarmMs > 0) {
        //for API >= 19 AlarmManager.set() triggers not at exact time (for battery saving)
        //and we should use AlarmManager.setExact() instead
        if (Build.VERSION.SDK_INT >= 19)
            alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, alarmIntent);
        else
            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, alarmIntent);
 
        Log.d(ALARMRI, "API:" + Integer.valueOf(Build.VERSION.SDK_INT).toString());
        Log.d(ALARMRI, "set:" + Long.valueOf(time).toString());
        Log.d(ALARMRI, "cur:" + Long.valueOf(SystemClock.elapsedRealtime()).toString());
        Log.d(ALARMRI, "delta:" + (Long.valueOf(time) -
                Long.valueOf(SystemClock.elapsedRealtime())));
    } else {
        alarmManager.cancel(alarmIntent);
        Log.d(ALARMRI, "unset");
    }
}
У кого-нибудь есть идеи в чем может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru