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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
#1

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

18.06.2015, 11:41. Просмотров 429. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как остановить запущеный процес (сервис)? (Программирование Android):

Как остановить сервис по нажатию на Notification - Программирование Android
в сервисе создаю сообщение: NotificationCompat.Builder builder = new NotificationCompat.Builder(this); ...

Остановить сервис при выходе из приложения - Программирование Android
Начал делать сервис для приложения и сразу возник костыль. Стартую сервис в onCreate активити, сервис постоянно должен работать на...

Как остановить AsyncTask? - Программирование Android
Не ругайтесь на код:) с Asynctask работаю только несколько дней class MyTask extends AsyncTask<Void, Void, Void> { @Override...

Как остановить анимацию - Программирование Android
Доброго времени суток. Есть две анимации которые работают по очереди, необходимо через определённое количество циклов остановить этот...

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

Как остановить слушатель сканера отпечатков пальцев - Программирование Android
Добрый день! Вопрос такой как после старта прослушивания сканера отпечатков принудительно остановить его, ну и соответсвенно при уходе...

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

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

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

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

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

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

Как из Активити запустить сервис ? - Программирование Android
Друзья как из Активити запустить сервис я знаю, но проблема в том что после того как я запускаю сервис и прописываю в него действия которые...

Как перенести данные из БД в сервис? - Программирование Android
Я сейчас пишу программу на андроид и в ней пользователь может внести в список (list view) данные друга - его имя и дату рождения. После...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
18.06.2015, 18:42
Ответ Создать тему
Опции темы

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