Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
1

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

18.06.2015, 11:41. Просмотров 671. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Есть код класса, наследующего 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));
    }
все равно поток сервиса продолжает работу и выдаст нам таки еще раз уведомление...
Вопрос: а как сделать так, чтоб из активити прекратить работу сервиса и остановить запущенные в нем задачи тут же... Может как то убить процесс?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2015, 11:41
Ответы с готовыми решениями:

Как остановить сервис по нажатию на Notification
в сервисе создаю сообщение: NotificationCompat.Builder builder = new...

Остановить сервис при выходе из приложения
Начал делать сервис для приложения и сразу возник костыль. Стартую сервис в...

Как остановить AsyncTask?
Не ругайтесь на код:) с Asynctask работаю только несколько дней class MyTask...

Как остановить анимацию
Доброго времени суток. Есть две анимации которые работают по очереди,...

Как остановить и восстановить приложение?
Значится так. Я пишу свое первое приложение, тестирую на Android 4.4. Если я...

9
Armagedo
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
18.06.2015, 12:17 2
Цитата Сообщение от Ханасака Посмотреть сообщение
а как сделать так, чтоб из активити прекратить работу сервиса и остановить запущенные в нем задачи тут же
Ну, я так понимаю, загвоздка в том, что система отрабатывает ваши комманды не сиюсекундно, а с некторой задержкой.

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

И эта - лучший ответ прибери-то
0
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
18.06.2015, 16:49  [ТС] 9
А тему как закрыть?
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
18.06.2015, 18:42 10
Armagedo, у автора сегодня несколько тем, в одной из них он выкладывал код.

Добавлено через 24 секунды
Ханасака, темы не закрываются здесь. Только модератор может это сделать, но ни к чему.
0
18.06.2015, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2015, 18:42

Как остановить слушатель сканера отпечатков пальцев
Добрый день! Вопрос такой как после старта прослушивания сканера отпечатков...

Как остановить по отдельности каждую мелодию в MediaPlayer?
Все привет,такое вопрос у меня , есть 3 кнопки ToggleButton и при нажатие на...

Как организовать сервис?
Здравствуйте! Подскажите пожалуйста, как лучше организовать сервис, который...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru