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

Как остановить запущеный процес (сервис)? - Android

Войти
Регистрация
Восстановить пароль
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
18.06.2015, 11:41     Как остановить запущеный процес (сервис)? #1
Здравствуйте!
Есть код класса, наследующего Servise
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int onStartCommand(Intent intent, int flags, int startId) {
        tTask = new TimerTask() {
            public void run() {
                try {
                    TimeUnit.SECONDS.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                sendNotif();
            }
        };
        timer.schedule(tTask, 1000, interval);
        return START_REDELIVER_INTENT;
    }
Когда в активити мы пытаемся остановить сервис с помощью
Java
1
2
3
public void onClickStop(View v) {
        stopService(new Intent(this, MyService.class));
    }
все равно поток сервиса продолжает работу и выдаст нам таки еще раз уведомление...
Вопрос: а как сделать так, чтоб из активити прекратить работу сервиса и остановить запущенные в нем задачи тут же... Может как то убить процесс?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.06.2015, 12:17     Как остановить запущеный процес (сервис)? #2
Цитата Сообщение от Ханасака Посмотреть сообщение
а как сделать так, чтоб из активити прекратить работу сервиса и остановить запущенные в нем задачи тут же
Ну, я так понимаю, загвоздка в том, что система отрабатывает ваши комманды не сиюсекундно, а с некторой задержкой.

Выход один - переписывать Андроид
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
18.06.2015, 12:25  [ТС]     Как остановить запущеный процес (сервис)? #3
Цитата Сообщение от Armagedo Посмотреть сообщение
Ну, я так понимаю, загвоздка в том, что система отрабатывает ваши комманды не сиюсекундно, а с некторой задержкой.
Тогда такие примеры: когда мы отменяем будильник - мы уверены, что он больше не зазвонит...Когда мы выходим из почтовика - он ни разу больше нам не отправит уведомление и пр. и пр.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.06.2015, 12:31     Как остановить запущеный процес (сервис)? #4
Ну, это вы загибаете - там затык минимальный, хотя в вашем случае получается достаточным для еще одного срабатывания.
Но то, что комманды системой могут (ключевое слово) отрабатываться не сиюсекндно, а с некоторой задержкой - факт.
Проверено на собственных приложениях - нажал, а отклик пошёл через секунд 5.
Раз на раз не приходится, но затык такого плана бывает.
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
18.06.2015, 14:59  [ТС]     Как остановить запущеный процес (сервис)? #5
В данном случае проблема была в том, что даже после вызова timer.cancel() последний вызов run() отправленный согласно вызову timer.schedule() все равно должен обработаться...Поэтому проблема решилась проверкой перед выполнением run(), не было ли изменено значение контролирующей переменной. В моём случае проверялась переменная interval в начале метода sendNotif()
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.06.2015, 16:29     Как остановить запущеный процес (сервис)? #6
Цитата Сообщение от Ханасака Посмотреть сообщение
В данном случае проблема была в том, что ... проверялась переменная interval в начале метода sendNotif()
К сожалению, реалии на нашей планете таковы, что до тех пора пока некто не выложит свой код полностью, остальные не имеют возможности проникнуть в его глубь, хоть они обосрись. Возможно в других местах с другими андроидами и интернетами всё выглядит иначе, но тут пока так вот...
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
18.06.2015, 16:39  [ТС]     Как остановить запущеный процес (сервис)? #7
Не обижайтесь, я думал и так понятно. Код не выкладывал с целью экономии чужого времени.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.06.2015, 16:40     Как остановить запущеный процес (сервис)? #8
Цитата Сообщение от Ханасака Посмотреть сообщение
Не обижайтесь
и в мыслях не было - то чисто педагогический опус

И эта - лучший ответ прибери-то
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
18.06.2015, 16:49  [ТС]     Как остановить запущеный процес (сервис)? #9
А тему как закрыть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2015, 18:42     Как остановить запущеный процес (сервис)?
Еще ссылки по теме:

Android Как из Активити запустить сервис ?
Android Как остановить сервис по нажатию на Notification
Остановить другое приложение Android
Android Как остановить и восстановить приложение?
Android Остановить сервис при выходе из приложения

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

Или воспользуйтесь поиском по форуму:
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
18.06.2015, 18:42     Как остановить запущеный процес (сервис)? #10
Armagedo, у автора сегодня несколько тем, в одной из них он выкладывал код.

Добавлено через 24 секунды
Ханасака, темы не закрываются здесь. Только модератор может это сделать, но ни к чему.
Yandex
Объявления
18.06.2015, 18:42     Как остановить запущеный процес (сервис)?
Ответ Создать тему
Опции темы

Текущее время: 19:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru