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

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

Войти
Регистрация
Восстановить пароль
 
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

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

20.06.2016, 14:25. Просмотров 236. Ответов 17
Метки нет (Все метки)

У меня есть активити, которое реализует интерфейс SwipeRefreshLayout.OnRefreshListener. В его методе onRefresh() я запускаю поток Thread. Внутри метода run этого потока выполняю сетевой запрос получаю JSON и вызываю метод h.post(handleProcess); - метод соответственно Handlera, который в UI потоке запускает handleProcess - Runnable(этот кусок кода обновляет текст в TextView). Вопрос в том как мне теперь грамотно завершить поток который запускается внутри onRefresh? Тем более метод stop у Thread уже устарел? Какую конструкцию для завершения потока мне здесь нужно использовать?
Вот фрагмент кода с потоком
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
@Override
    public void onRefresh() {
 
        Log.d("Func", "Refresh" );
        Thread t = new Thread(new Runnable() {
            public void run() {
 
               getjson = req.cashingJSON();
 
 
                    //Log.d("Func", getjson );
                    h.post(handleProcess);
 
            }
 
            });
        t.start();
 
    }
 
    Runnable handleProcess = new Runnable() {
        public void run() {
 
            Log.d("Func","in handleProcess");
            //t.interrupt();
            if(getjson != null) {
                List<Object> data = req.parseResult(getjson);
                User user = (User) data.get(0);
 
                list1 = (ArrayList<_20140413>) data.get(1);
                list2 = (ArrayList<_20140414>) data.get(2);
                list3 = (ArrayList<_20140415>) data.get(3);
 
                Log.d("Func", "" + user.getBalance() + user.getMiles());
 
                mSwipeRefreshLayout.setRefreshing(false);
 
                textView.setText("USER" + '\n' + "balance" + "    " + user.getBalance() + '\n' + "miles" + "    " + user.getMiles());
            }
        }
    };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2016, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Остановить поток запущенный внутри onRefresh() (Программирование Android):

Запущенный service не работает, когда нет процесса - Программирование Android
Запускаю сервис в startForeground() он работает, в работающих приложениях у меня показано активны 1н процесс и 1н сервис (мой). Но когда...

Как остановить, а затем возобновить поток с циклом while внутри? - C#
Помогите решить задачу! Есть поток Thread thread = new Thread(new ThreadCallBack(RecivePackets)); thread.Start(); есть метод ...

Остановить цикл, запущенный в потоке - C#
new Action(() =&gt;{ while (true){ }}); Запущен цикл в другом потоке, как его остановить из вне..?? То есть из функции которая вне этого...

Остановить поиск, запущенный в отдельном потоке - Visual Basic .NET
Всем доброго дня. Imports System.Threading Public Class Form1 Public Class Param Private _Fold As String ...

Как остановить цикл, запущенный в потоке - C#
Есть некий цикл Parallel.ForEach который запускается в отдельном потоке(что бы интерфейс не зависал), как его остановить? Когда пользовался...

.NET 2.x Как остановить уже запущенный метод? - C#
Вот к примеру я вызываю метод в Form_Load() SpisokBreakfast(); И он уже выполняет свою функцию, можно ли остановить метод через...

17
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
20.06.2016, 16:55 #16
по поводу размера текста - пользователь сам может выбрать размер в настройках телефона, можно за него сильно не переживать
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.06.2016, 01:41  [ТС] #17
Речь идет не о размере самого текста, а о размере самого элемента TextView(который этот текст содержит). Несмотря на то что его ширину и высоту задаешь в dp на разных разрешениях экрана он выглядит по разному(при больших разрешениях TextView выглядит маленьким а на малых разрешениях экрана наоборот большим). Как учесть этот момент? Как сделать чтобы при разных разрешениях экрана TextView выглядел нормально? Как сделать разные разметки или задать параметры высоты и ширины UI элементов для разных размеров экрана?
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
21.06.2016, 08:36 #18
Цитата Сообщение от yura91 Посмотреть сообщение
Несмотря на то что его ширину и высоту задаешь в dp
для этого придумали weight классика жанра
0
21.06.2016, 08:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2016, 08:36
Привет! Вот еще темы с ответами:

Остановить socket.Accept() внутри блока while который находится внутри потока - C#
Сам код using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Остановить поток - Delphi
Помогите пожалуйста создать кнопку, нажав на которую можно было бы остановить поток.

Остановить поток - Delphi
Есть 3 потока 1-главный он отвечает за выполнение 2 и 3 потока нужно: 1 поток сотановился и запустил 2 поток, 2 поток выполнил свое...

Остановить поток - Java Сети
Есть такой потом: Runnable r = new Runnable() { public void run() { try { ServerSocket server = new...


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

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

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