Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153

Автозапуск приложения после его закрытия

04.12.2014, 21:07. Показов 9040. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Хочу сделать автозапуск приложения после его закрытия или сворачивания через некоторое время, как можно реализовать? возможно через сервисы, но не знаю как создать команду на запуск приложения из сервиса. Подскажите куда копать??? спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2014, 21:07
Ответы с готовыми решениями:

Как после автоматического запуска приложения, после его закрытия вернуться к приложению которое было открыто раньше?
Путано описал, вот попроще: 1) Запущено приложение. 2) Автоматически запускается другое приложение - первое сворачивается 3)...

Service автозапуск после закрытия родителя
Такой вопрос назрел несущей. Есть актвити и сервис. и подружить бы мне б их хотелось. но есть проблема везкая. дружбу дружбою...

Кнопки удаляются после закрытия приложения
Я создаю кнопки но не могу с ними взаимодействовать и их сохранять, можете помочь решить проблему? кнопки удаляются после закрытия...

16
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
05.12.2014, 07:03
broadcast receiver
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
05.12.2014, 09:00
Цитата Сообщение от mercooliy Посмотреть сообщение
Подскажите куда копать???
Еще не до конца освоил технологию(не добился полностью безглючности), но:
Назначаете таймер на отправку сообщения.
Делаете глобальный ресивер (в манифесте) для отлова этого сообщения и туда прописываете действия (открытие активити или запуск сервиса).
Таймер можно сделать одноразовый (через 10 минут) или многоразовый (каждые 10 минут).
С многоразовым аккуратнее (я на этом обломался) - если такой назначать при каждом "срабатывании" и запустить его 30 раз, получите 30кратное "ускорение" и занятость памяти. Я добивался того что "ура - все работает", но через час-три мобилка перегружалась от переполнения памяти...
Теоретически (до этого не добрался - отложил проект) многоразовый можно "остановить".
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
17.12.2014, 10:30  [ТС]
Да я придумал как сделать, черещ сервис запускаю открытие приложения, но есть два момента - я не могу запустить сервис при закрытии приложения, и почему то сервис тухнет при закрытии приложения, дааже есди запустить его при старте проги. То есть вопрос терь такой : как сервис запускать при закрытии или сворачивании приложения?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
17.12.2014, 11:50
Я же вроде довольно подробно описал...
1) ресивер запускает сервис или прямо твою форму/активити
2) назначаешь таймер (например каждые 5 минут или через 5 минут), который отсылает системе сигнал, который ловит ресивер.
3) таймер можно запускать на некоторые действия "сворачивания".
УЧТИ! не все способы закрытия программы можно "отловить" - например лонг-хоум и "закрыть" там не обрабатывается.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.12.2014, 12:05
Цитата Сообщение от Tester64 Посмотреть сообщение
не все способы закрытия программы можно "отловить" - например лонг-хоум и "закрыть" там не обрабатывается.
У всех активити которые на тот момент были в памяти вызывается onDestroy(). Можно попробовать в этом методе запускать сервис, который сразу же запустит активити обратно. Если придерживаться советов гугла, в частности о том, что должна быть единая точка входа и выхода в приложении т.е. какой-то экран, который запускается при запуске приложения и при нажатии на нем кнопки "Назад" приложение закрывается, - можно добавить код на перезапуск только в эту активити т.к. она всегда будет в стеке и при выгрузке всего приложения у нее вызовется метод onDestroy().
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
17.12.2014, 12:06  [ТС]
))пришли пжл код где ресивер работает, я прост не пойму что это за штука, я у ся сделал какой то ресивер broadcast receiver , но он на запуск работает при включении. мне бы тоже самое но каждый 10 минут к примеру
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
17.12.2014, 15:40
Цитата Сообщение от mercooliy Посмотреть сообщение
пришли пжл код где ресивер работает, я прост не пойму что это за штука
Основы здесь: http://startandroid.ru/ru/urok... eiver.html
От себя добавлю - можно задавать прямо внутри активити или регистрировать глобальную в манифесте
Можно натравить НА ЛЮБУЮ (разумную) строку - например "com.my.helloworld.receiver123". Главное что-бы не сработало случайно на чужую программу.
Можно отсылать любые сообщения (у меня где-то есть примеры, но искать надо)
Нельзя отсылать системные имена (ресивер на звонок, смс) - их блокирует ОС.
Тебе нужен глобальный в манифесте.
Сообщения может отсылать таймер даже при закрытой программе. Если система поймает такое сообщение и обнаружит что у тебя в манифесте есть ресивер с ловушкой на это сообщение, оно разбудит ресивер, а тот уж сам решит что делать - сервис запускать или сразу активити.

Сегодня сам весь день изучаю таймеры, ресиверы и сервисы... у самого каша в голове (но в основном по таймерам - с ресиверами разобрался).
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
18.12.2014, 16:43  [ТС]
привет) вроде сделал ресивер в манифесте, создал класс для ресивера, потом сделал типа Intent intent = new Intent(MainActivity.BROADCAST_ACTION); это как я понял для запуска ресивера - когда эта команда будет, тогда зарабоатет ресивер?
терь вопрос вставяю вот такой код

Java
1
2
3
4
5
6
7
8
9
10
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
 
        Intent intent = new Intent();
        String pkg = "com.example.merch_v01";
        String cls = "com.example.merch_v01.MainActivity";
        intent.setClassName(pkg, cls); 
        startActivity(intent);
    }
а он ругается на startActivity , типа нету тут такого метода))), что я делаю не так и как правильно)) спасибо

Добавлено через 3 часа 48 минут
нашел в чем причина, теперь ресивер запускается, только толку от него всё равно мало, если сделать что то в этом духе
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
Timer timer;
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
 
            timer=new Timer();
            timer.schedule(new TaskMy(), 100000);
            context.startService(new Intent(context, runs.class)); 
            
       /////////////////////////
    }
 
       
      // Intent dialogIntent = new Intent(context, Player.class);
       //   dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       //   context.startActivity(dialogIntent);    
        
    }
    class TaskMy extends TimerTask
       {       
 
        @Override
        public void run() {
            
            Intent intent = new Intent();
            String pkg = "com.example.merch_v01";
            String cls = "com.example.merch_v01.MainActivity";
            intent.setClassName(pkg, cls); 
           //    startActivity(intent);
    
            // TODO Auto-generated method stub
            
        }
       }
то ничего не запускается после закрытия программы (именно закрытия, а не сворачивания)
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.12.2014, 16:51
mercooliy, в качестве контекста вы конечно же передаете активити? Как вы хотите чтобы работал код, который ссылается на активити, которой нет? Я выше писал как можно сделать без ресивера, но если хотите именно так - вам нужен сервис, но это все равно не поможет, если приложение принудительно будет выгружено из памяти. Сам не пробовал, но видел в некоторых приложениях в т.ч. в плеерах - в строке уведомлений всегда висит уведомление от приложения и если его закрыть приложение через некоторое время будет выгружено. Даже в справке пишут, что уведомление нужно для запрета выгрузки приложения и без него никак. Хотя это было еще во времена андроида версии 2.3. Может сейчас есть что-то проще.
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
18.12.2014, 16:55  [ТС]
спасибо что откликнулся))) да я сначала делал сервисом и работало в методе onPause () (onDestroy() ваще не хотел ничего запускать) есть два но
1. он почему то не всегда срабатывал даже когда я не убивал прогу, то есть если просто свернут и смотреть он запустится, а если жестко лазить всё подряд открывать, то он как то про это дело забывает)))
2. сервис по непонятным мне причинам при закрытии прогу убивается вместе с ней, что для меня новость, потому что я точно помню как делал для себя примерчик сервисом который никуда не уходил даже после закрытия проги, хотя версия дроида там была другая
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.12.2014, 16:59
Я особо не разбирался с сервисами, но по-моему там есть какие то параметры (в манифесте вроде) с помощью которых можно "отделить" сервис от приложения.
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
18.12.2014, 17:02  [ТС]
а может подскажешь как можно узнать какие проги сейчас запущены в андроиде?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.12.2014, 17:16
Если сток: настройки-приложения-работающие.

Добавлено через 43 секунды
можно еще через DDMS смотреть в ide.
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
18.12.2014, 17:16  [ТС]
)))не, программно, получить массив запущенных прог
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.12.2014, 17:22
http://stackoverflow.com/a/3479710 Насколько понял вот этот код возвращает массив процессов:
Java
1
2
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
0
6 / 6 / 1
Регистрация: 12.05.2013
Сообщений: 153
23.12.2014, 09:45  [ТС]
спс, правда всё равно проблема в том что сервис не работает при закрытом приложении (это бы всё решало) , то есть и ресивер не работает если выключить приложение. У кого нить работает сервис отдельно то приложения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2014, 09:45
Помогаю со студенческими работами здесь

AlarmManager не работает после закрытия приложения
Всем привет, сделал ресивер + нацепил туда alarm вот код в классе ресивера public void SetAlarm(Context context) { AlarmManager...

Не перезапускать сервис после закрытия и открытия приложения
Приветствую. Такая проблема, на андройде сервис перезапускается после закрытия и открытия приложения. Надо чтобы сервис после...

Не удается остановить воспроизведение потока после закрытия и открытия приложения
Написал приложение для воспроизведения аудио-потока. Кнопки Старт и Стоп работают нормально. Если закрыть приложение не выключая поток,...

После закрытия приложения пользователем код в таймере продолжает выполняться
Если запустить таймер в android с периодом в пять секунд выполнения действия и в функции run() накодить какой то процесс. То после закрытия...

Как создать службу, которая не будет завершать свою работу после закрытия приложения?
Использовал много разных примеров, но ни один не работает. С любым из примеров служба выключается.. Вот один из примеров что я пробовал...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru