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

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

Войти
Регистрация
Восстановить пароль
 
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
#1

Как остановить AsyncTask? - Android

25.08.2015, 22:32. Просмотров 608. Ответов 2
Метки нет (Все метки)

Не ругайтесь на код с Asynctask работаю только несколько дней

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class MyTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
        }
 
        @Override
        protected Void doInBackground(Void... params) {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            TextView BeforeGold = (TextView) findViewById(R.id.CoastGold); //Берем нынешний курс
            course = course + 1;
 
//Если course больше трех, запускаем  GoldNews0()
            if (course > 3) {
                GoldNews0();
                course = 0;
            }
 
            sPref = getSharedPreferences("GLOBAL_GOLD_MASS", MODE_MULTI_PROCESS); //Файл массы
            String savedText = sPref.getString(GLOBAL_GOLD_MASS, ""); //Загружаем массу
            double mass = Double.valueOf(savedText); //Переводим его в double
            double AfterGold = Integer.valueOf(BeforeGold.getText().toString()) + (Integer.valueOf(BeforeGold.getText().toString()) * (Double.valueOf(mass) * 0.01)); //Вычисляем новый курс
            int AfterGold2 = Integer.valueOf((int) AfterGold);
            CoastGold.setText("" + AfterGold2); //Выводим новый курс
//Если ценность падает, цвет становится красным
            if (mass < 0) {
                CoastGold.setTextColor(getResources().getColor(R.color.Red));
            } else {
                CoastGold.setTextColor(getResources().getColor(R.color.Green));
            } //При повышений цены цвет становится зеленым
//Выводим значение массы
            mass1.setText("" + savedText);
//Сохраняем цену золота
            saveGoldCourse();
//Перезапускаем  MyTask()
            mt = new MyTask();
            mt.execute();
        }
    }
Надо любым способом уничтожить данный асинктаск в

Java
1
2
3
public void onBackPressed() {
 
    }
но как?

Добавлено через 6 минут
можно хоть весь активити уничтожить
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2015, 22:32     Как остановить AsyncTask?
Посмотрите здесь:

Android Как обновить TextView с AsyncTask?
Android Как поставить поставить AsyncTask на паузу?
Как из AsyncTask Добавить элементы в ListView Android
Как написать простейший запрос на сервер без использование AsyncTask Android
Android Как реализовать Синхронное выполнение двух функций при вызове AsyncTask
Android Как получить значение String из UI потока в потоке AsyncTask?
AsyncTask как дождаться окончания Android
Android Как приостановить doInBackground() из AsyncTask
Android Как остановить по отдельности каждую мелодию в MediaPlayer?
Как остановить запущеный процес (сервис)? Android
Android Как остановить сервис по нажатию на Notification
Android Как остановить и восстановить приложение?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2015 / 1757 / 547
Регистрация: 12.05.2014
Сообщений: 6,234
Завершенные тесты: 1
25.08.2015, 22:34     Как остановить AsyncTask? #2
никак
просто в onPostExecute() перед тем как что-то менять или обращаться к элементам экрана проверяй контекcт на null и все

и что-то другое вызывать из асинктаска тоже не кошерно, я про GoldNews0();
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
25.08.2015, 22:41     Как остановить AsyncTask? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот так переписать класс.

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
class MyTask extends AsyncTask<Void, Void, Void>{
 
 
        private boolean isStop = false;
        
        public void stop(){
            isStop = true;
        }
 
        @Override
        protected Void doInBackground(Void... params) {            
            while(!isStop){
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                publishProgress();
            }
            
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
            //Тут операции из onPostExecute.
        }
    }
и потом
Java
1
task.stop();
Yandex
Объявления
25.08.2015, 22:41     Как остановить AsyncTask?
Ответ Создать тему
Опции темы

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