mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
#1 | |
Автозапуск приложения после его закрытия - Программирование Android04.12.2014, 21:07. Просмотров 2212. Ответов 16
Метки нет Все метки)
(
Всем привет. Хочу сделать автозапуск приложения после его закрытия или сворачивания через некоторое время, как можно реализовать? возможно через сервисы, но не знаю как создать команду на запуск приложения из сервиса. Подскажите куда копать??? спасибо
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
04.12.2014, 21:07 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Автозапуск приложения после его закрытия (Программирование Android):
16
Кнопки удаляются после закрытия приложения - Программирование Android AlarmManager не работает после закрытия приложения - Программирование Android Не перезапускать сервис после закрытия и открытия приложения - Программирование Android Не удается остановить воспроизведение потока после закрытия и открытия приложения - Программирование Android После закрытия приложения пользователем код в таймере продолжает выполняться - Программирование Android |
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 340
|
|
05.12.2014, 07:03 | #2 |
broadcast receiver
0
|
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
05.12.2014, 09:00 | #3 |
Еще не до конца освоил технологию(не добился полностью безглючности), но:
Назначаете таймер на отправку сообщения. Делаете глобальный ресивер (в манифесте) для отлова этого сообщения и туда прописываете действия (открытие активити или запуск сервиса). Таймер можно сделать одноразовый (через 10 минут) или многоразовый (каждые 10 минут). С многоразовым аккуратнее (я на этом обломался) - если такой назначать при каждом "срабатывании" и запустить его 30 раз, получите 30кратное "ускорение" и занятость памяти. Я добивался того что "ура - все работает", но через час-три мобилка перегружалась от переполнения памяти... Теоретически (до этого не добрался - отложил проект) многоразовый можно "остановить".
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
17.12.2014, 10:30 [ТС] | #4 |
Да я придумал как сделать, черещ сервис запускаю открытие приложения, но есть два момента - я не могу запустить сервис при закрытии приложения, и почему то сервис тухнет при закрытии приложения, дааже есди запустить его при старте проги. То есть вопрос терь такой : как сервис запускать при закрытии или сворачивании приложения?
0
|
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
17.12.2014, 11:50 | #5 |
Я же вроде довольно подробно описал...
1) ресивер запускает сервис или прямо твою форму/активити 2) назначаешь таймер (например каждые 5 минут или через 5 минут), который отсылает системе сигнал, который ловит ресивер. 3) таймер можно запускать на некоторые действия "сворачивания". УЧТИ! не все способы закрытия программы можно "отловить" - например лонг-хоум и "закрыть" там не обрабатывается.
0
|
Spelcrawler
|
|
17.12.2014, 12:05 | #6 |
У всех активити которые на тот момент были в памяти вызывается onDestroy(). Можно попробовать в этом методе запускать сервис, который сразу же запустит активити обратно. Если придерживаться советов гугла, в частности о том, что должна быть единая точка входа и выхода в приложении т.е. какой-то экран, который запускается при запуске приложения и при нажатии на нем кнопки "Назад" приложение закрывается, - можно добавить код на перезапуск только в эту активити т.к. она всегда будет в стеке и при выгрузке всего приложения у нее вызовется метод onDestroy().
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
17.12.2014, 12:06 [ТС] | #7 |
))пришли пжл код где ресивер работает, я прост не пойму что это за штука, я у ся сделал какой то ресивер broadcast receiver , но он на запуск работает при включении. мне бы тоже самое но каждый 10 минут к примеру
0
|
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
17.12.2014, 15:40 | #8 |
Основы здесь: http://startandroid.ru/ru/uroki/vse-...treceiver.html
От себя добавлю - можно задавать прямо внутри активити или регистрировать глобальную в манифесте Можно натравить НА ЛЮБУЮ (разумную) строку - например "com.my.helloworld.receiver123". Главное что-бы не сработало случайно на чужую программу. Можно отсылать любые сообщения (у меня где-то есть примеры, но искать надо) Нельзя отсылать системные имена (ресивер на звонок, смс) - их блокирует ОС. Тебе нужен глобальный в манифесте. Сообщения может отсылать таймер даже при закрытой программе. Если система поймает такое сообщение и обнаружит что у тебя в манифесте есть ресивер с ловушкой на это сообщение, оно разбудит ресивер, а тот уж сам решит что делать - сервис запускать или сразу активити. Сегодня сам весь день изучаю таймеры, ресиверы и сервисы... у самого каша в голове (но в основном по таймерам - с ресиверами разобрался).
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|||||||||||
18.12.2014, 16:43 [ТС] | #9 | ||||||||||
привет) вроде сделал ресивер в манифесте, создал класс для ресивера, потом сделал типа Intent intent = new Intent(MainActivity.BROADCAST_ACTION); это как я понял для запуска ресивера - когда эта команда будет, тогда зарабоатет ресивер?
терь вопрос вставяю вот такой код
Добавлено через 3 часа 48 минут нашел в чем причина, теперь ресивер запускается, только толку от него всё равно мало, если сделать что то в этом духе
0
|
Spelcrawler
|
|
18.12.2014, 16:51 | #10 |
mercooliy, в качестве контекста вы конечно же передаете активити? Как вы хотите чтобы работал код, который ссылается на активити, которой нет? Я выше писал как можно сделать без ресивера, но если хотите именно так - вам нужен сервис, но это все равно не поможет, если приложение принудительно будет выгружено из памяти. Сам не пробовал, но видел в некоторых приложениях в т.ч. в плеерах - в строке уведомлений всегда висит уведомление от приложения и если его закрыть приложение через некоторое время будет выгружено. Даже в справке пишут, что уведомление нужно для запрета выгрузки приложения и без него никак. Хотя это было еще во времена андроида версии 2.3. Может сейчас есть что-то проще.
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
18.12.2014, 16:55 [ТС] | #11 |
спасибо что откликнулся))) да я сначала делал сервисом и работало в методе onPause () (onDestroy() ваще не хотел ничего запускать) есть два но
1. он почему то не всегда срабатывал даже когда я не убивал прогу, то есть если просто свернут и смотреть он запустится, а если жестко лазить всё подряд открывать, то он как то про это дело забывает))) 2. сервис по непонятным мне причинам при закрытии прогу убивается вместе с ней, что для меня новость, потому что я точно помню как делал для себя примерчик сервисом который никуда не уходил даже после закрытия проги, хотя версия дроида там была другая
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
18.12.2014, 17:02 [ТС] | #13 |
а может подскажешь как можно узнать какие проги сейчас запущены в андроиде?
0
|
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 147
|
|
18.12.2014, 17:16 [ТС] | #15 |
)))не, программно, получить массив запущенных прог
0
|
18.12.2014, 17:16 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
18.12.2014, 17:16 |
Привет! Вот еще темы с ответами:
15
Как создать массив который сохраняет свои значение даже после закрытия приложения - Программирование Android
Не освобождаются ресурсы после закрытия Activity - Программирование Android Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |