|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
В приложении зарегистрирован BroadcastReceiver, у приложения есть разрешение RECEIVE_BOOT_COMPLETED. Получается что устанавливаю приложение, запускаю его и оно может слушать системные оповещения, перегружаю устройство - тоже все хорошо - приложение попрежнему слушает. Но это все до тех пор пока в системных настройках на моем приложении не нажать кнопку "Остановить" -после этого приложение уже не "слушает" и перезагрузка ничего не меняет. Что можно сделать чтобы "слушатель" убивался только удалением приложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2014, 16:59 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Пытался "запустить" сервисом с параметрами START_STICKY, START_REDELIVER_INTENT так этот сервис тоже останавливается навечно. Но у меня на смарте установлено приложение AccuWeather - там вот его остановить не удается - через 5 сек после остановки оно снова запущено. Как это сделано? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 09:17 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийКак это сделано? Разбери его, посмотри, какие приемники и какие права у него? П.С. Оно случаем не системное? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 09:25 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
wadmanМикола ПитерскийКак это сделано? Разбери его, посмотри, какие приемники и какие права у него? П.С. Оно случаем не системное? Да системное - я его удалить не смог - только отключить (деактивировать). А что для системных такое можно сделать? Еще - я умею смотреть исходники с помощью dex2jar.bat + jd-gui.exe но не знаю чем можно просмотреть манифест и каталог res\values - чем это можно смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 09:30 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
http://stackoverflow.com/questions/4191762/how-to-view-androidmanifest-xml-from-apk-file http://stackoverflow.com/questions/2097813/how-to-parse-the-androidmanifest-xml-file-inside-an-apk-package ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 09:40 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийА что для системных такое можно сделать? Не знаю точную технологию, но вполне (и я такое встречал) это приложение подписано не только на загрузку, но еще на десяток других событий и проверяет/восстанавливает убитые подписки... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 09:45 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Вот что у него в манифесте, относящееся к системе: Код: 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.
Вроде как эти вещи подозрительные - погуглил но вобще непонятно что они делают: <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.EMBED" /> ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 10:47 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола Питерский<category android:name="android.intent.category.DEFAULT" /> Дефолтная активити, ничего странного. Микола Питерский<category android:name="android.intent.category.EMBED" /> String EMBED_CATEGORY categories: the ability to run at the higher level (parent) Activity. "Android.intent.category.EMBED" - тоже ничего необычного. Микола ПитерскийНо это все до тех пор пока в системных настройках на моем приложении не нажать кнопку "Остановить" -после этого приложение уже не "слушает" и перезагрузка ничего не меняет. Вообще странная ситуация, не помню, чтоб у меня слушатель прибивался. Только если насильно его отписать программой типа Autostarts. Смотри в логах, что происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 10:59 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола Питерский<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.EMBED" /> это к интентам, фильтрам относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 11:03 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
у меня, кстати, RECEIVE_BOOT_COMPLETED нормально слушается и после прибивания проги. подозреваю, что для этого рессивера и запущенный сервис не обязателен, ведроид сам найдет по интент фильтрам и запустит ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 11:05 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
wadmanВообще странная ситуация, не помню, чтоб у меня слушатель прибивался. Только если насильно его отписать программой типа Autostarts. Смотри в логах, что происходит. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Слушатель подписан к событиям через манифест. Все работает замечательно даже после перезагрузки устр-ва (программу не нужно повторно запускать), но если запустить системную прогу "настройки\приложения" выбираем это приложение и нажать кнопку "остановить", которая рядом с "удалить" - то слушатель уже не работает и после перезагрузки тоже не работает, а вот если там же ниже нажать кнопку "запуск" то слушатель начинает работать. Проверил это уже на нескольких устройствах 4.2 - 5 версии андроида. Не понимаю - почему у вас он попрежнему работает ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 11:41 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийНе понимаю - почему у вас он попрежнему работает ??? Вон о чем речь. логично же, приложение отключается СОВСЕМ. А системные не все можно отключить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 11:44 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
т.е. выхода из этой ситуации нет? Или надо 2 разных приложения чтоб они друг друга запускали, но как тогда отловить событие "остановки" приложения, а нельзя ли в этом же приложении запустить сервис с другим URL и в другом процессе - тогда при остановке приложения такой сервис не остановится? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 11:52 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола Питерскийт.е. выхода из этой ситуации нет? Нет, отключено, значит отключено. И даже старания другими приложениями тут ни к чему не приведут, т.к. они не смогут запустить отключенное приложение. Даже если системное приложение пытается запустить обычное отключенное, оно все равно не запустится. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 12:17 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
wadmanМикола Питерскийт.е. выхода из этой ситуации нет? Нет, отключено, значит отключено. И даже старания другими приложениями тут ни к чему не приведут, т.к. они не смогут запустить отключенное приложение. Даже если системное приложение пытается запустить обычное отключенное, оно все равно не запустится. Я понимаю что по этой кнопке "Остановить" приложение не "Отключается" а просто выгружается из памяти, т.к. такое "отключенное" приложение можно потом успешно запустить его же ярлычком из рабочего стола. А если приложение не запущено - то его слушатель в очереди на получение сообщений не стоит. То же самое - если установить приложение, но не запустить - слушатель также "глухой". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 12:37 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийЯ понимаю что по этой кнопке "Остановить" приложение не "Отключается" а просто выгружается из памяти, т.к. такое "отключенное" приложение можно потом успешно запустить его же ярлычком из рабочего стола. Может от перевода зависит... Но если только останавливается и его можно запустить, то все равно без дебаггера и логов ничего не скажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 13:22 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
wadmanМикола ПитерскийЯ понимаю что по этой кнопке "Остановить" приложение не "Отключается" а просто выгружается из памяти, т.к. такое "отключенное" приложение можно потом успешно запустить его же ярлычком из рабочего стола. Может от перевода зависит... Но если только останавливается и его можно запустить, то все равно без дебаггера и логов ничего не скажешь. Так есть и кнопка "отключение" приложения - тогда, как я понял, такое приложение переносится в отдельную песочницу вместе с его файлами и там ждет когда его обратно восстановят и ярлык такого приложения исчезает с рабочих столов и естественно что эти приложения не запущены и их невозможно запустить. А я именно про кнопку "Остановить" вел речь и чесно говоря удивлен что она слушателей прибивает, правда наверное никто не пробовал выгружать приложение по finish() и поэтому приложения всегда в памяти остаются и "слушают". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 13:53 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийА я именно про кнопку "Остановить" вел речь и чесно говоря удивлен что она слушателей прибивает, правда наверное никто не пробовал выгружать приложение по finish() и поэтому приложения всегда в памяти остаются и "слушают". Видимо не знаком с механизмом слушателей? Тогда хотя-бы предположи, как слушатель работает после рестарта смарта? Ведь приложение еще не запускалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 13:58 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
wadmanМикола ПитерскийА я именно про кнопку "Остановить" вел речь и чесно говоря удивлен что она слушателей прибивает, правда наверное никто не пробовал выгружать приложение по finish() и поэтому приложения всегда в памяти остаются и "слушают". Видимо не знаком с механизмом слушателей? Тогда хотя-бы предположи, как слушатель работает после рестарта смарта? Ведь приложение еще не запускалось. Я раньше думал что при установке приложения система смотрит какие слушатели объявлены в приложении и при наступлении какого-то конкретного события в системе она запускает все приложения, у которых объявлен этот слушатель и по цепочке по приоритетам или всем одновременно передает это оповещение. А теперь я вообще запутался и понятия не имею как это происходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 14:09 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола ПитерскийЯ раньше думал что при установке приложения система смотрит какие слушатели объявлены в приложении и при наступлении какого-то конкретного события в системе она запускает все приложения, у которых объявлен этот слушатель и по цепочке по приоритетам или всем одновременно передает это оповещение. Именно так и происходит. И потому как из троих ты первый с таким столкнулся, придется тебе исследовать этот вопрос. :) wadmanбез дебаггера и логов ничего не скажешь. Может у тебя там исключение вываливается... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 14:14 |
|
BroadcastReceiver - как не дать его остановить?
|
|||
---|---|---|---|
#18+
Микола Питерский, кое-что накопал, посмотри http://developer.android.com/intl/ru/reference/android/content/Intent.html#FLAG_INCLUDE_STOPPED_PACKAGES ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 11:29 |
|
|
start [/forum/topic.php?desktop=1&fid=13&tid=1331495]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 438ms |
0 / 0 |