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

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

Войти
Регистрация
Восстановить пароль
 
 
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 84
#1

Как забрать данные из отработавшего потока? - Программирование Android

16.10.2014, 14:41. Просмотров 1083. Ответов 22
Метки нет (Все метки)

Код в потоке сгенерил массив интов и завершился.Как забрать данные?
ЗЫ:в жабе есть какой то аналог WaitForSingleObject ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2014, 14:41     Как забрать данные из отработавшего потока?
Посмотрите здесь:
Android Как вытащить данные из потока. Cant create handler inside thread that has not called Looper.prepare()
Рэндомно забрать из cursor Android
Как извлечь данные из сервера Parse, чтобы эти данные были видны всем? Android
Android UiThread, как вынести процесс из главного потока?
Android Как не допустить создание потока еще раз?
Как можно в progressBar вернуть прогресс нужного потока? Android
Android Как получить значение String из UI потока в потоке AsyncTask?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.10.2014, 18:30     Как забрать данные из отработавшего потока? #16
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
class GenArr extends Thread
{
    private android.os.Handler handler;
    private int arSZ;
    private int min;
    private int max;
    private int []aRR;
    Random r;
    public GenArr(Handler handler, int arSz,int MIN,int MAX)
    {
        this.handler = handler;
        this.arSZ=arSz;
        this.min=MIN;
        this.max=MAX;
        this.aRR=new int[this.arSZ];
    }
    @Override
    public void run()
    {
        this.r = new Random();
        this.r.setSeed(System.currentTimeMillis());
        for(int i=0;i<this.arSZ;i++)
        {
            this.aRR[i]=this.r.nextInt(max - min) + min;
        }
        handler.post(new Runnable() { 
             @Override
             public void run() {
                  textView.setText("Done");
              }
    });
}
писал на коленке, проверьте.
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 84
18.10.2014, 21:10  [ТС]     Как забрать данные из отработавшего потока? #17
YuraAAA, Я вас не понимаю.При чем здесь это:
Java
1
textView.setText("Done");
???????????

Добавлено через 17 минут
ЗЫ: что вернет Thread::getState() после завершения Thread::run() - WAITING или TERMINATED ?
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
19.10.2014, 11:40     Как забрать данные из отработавшего потока? #18
yotsi,
Цитата Сообщение от yotsi Посмотреть сообщение
Вывести результат работы потока?
Вот что это. А что Вам надо сделать с ним?

Цитата Сообщение от yotsi Посмотреть сообщение
ЗЫ: что вернет Thread::getState() после завершения Thread::run() - WAITING или TERMINATED ?
Зачем Вам это?
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 84
19.10.2014, 21:32  [ТС]     Как забрать данные из отработавшего потока? #19
В общем все как всегда... После нескольких дней без результативных попыток найти что то в РУ, все решилось 20 минутами гугления на инглише.
Сделал через Runnable. Может кому из новичков будет полезно.Вот:
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
class GenArr implements Runnable
{
    private int arSZ;
    private int min;
    private int max;
    private int []aRR;
    Random r;
    public GenArr(int arSz,int MIN,int MAX,Random R)
    {
        this.arSZ=arSz;
        this.min=MIN;
        this.max=MAX;
        this.aRR=new int[this.arSZ];
        this.r=R;
    }
    @Override
    public void run()
    {
        for(int i=0;i<this.arSZ;i++)
        {
            this.aRR[i]=Color.argb(255,r.nextInt(max - min) + min, r.nextInt(max - min) + min, 
                    r.nextInt(max - min) + min);
        }
    }
    public int[] getThResult()
    {
        return this.aRR;
    }
}
/***********************************************/
        GenArr gar=new GenArr(this.widthScr*this.heighScr,0,255,this.R);
        Thread thr=new Thread(gar);
        thr.start();
        try {
            thr.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        this.colArr=gar.getThResult();
/***********************************************/
ЗЫ: учусь дальше параллелить задачи в потоки на жабе.

Добавлено через 4 часа 26 минут
Подскажите как в жабе называеться такая штука - в классе родительского потока объявляться метод, указатель на который передается в дочерний поток, из которого вызовом этого метода данные передаются назад в родительский поток?
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.10.2014, 15:55     Как забрать данные из отработавшего потока? #20
Цитата Сообщение от yotsi Посмотреть сообщение
thr.join();
что повесит вызывающий поток (скорее всего UI).
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 84
20.10.2014, 15:58  [ТС]     Как забрать данные из отработавшего потока? #21
Цитата Сообщение от YuraAAA Посмотреть сообщение
что повесит вызывающий поток (скорее всего UI).
Повисит и отвиснет, всеравно в нем только битмап и выводиться, больше от него ничего и не требуется.Задача - максимально быстро раскрашивать битмап рандомными значениями.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.10.2014, 16:19     Как забрать данные из отработавшего потока? #22
yotsi, а если слабый девайс? ANR?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2014, 18:38     Как забрать данные из отработавшего потока?
Еще ссылки по теме:
Как добавить в приложение просмотр потока с камеры видеонаблюдения? Android
Как из одного потока вызвать метод таким образом, чтобы он выполнялся в другом потоке Android
Как зашифровать данные в БД? Android
Android Как подгрузить данные в AutoCompleteTextView?
Android Как передать данные в EditText

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

Или воспользуйтесь поиском по форуму:
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 84
20.10.2014, 18:38  [ТС]     Как забрать данные из отработавшего потока? #23
У меня MTK6589, он пока еще не слишком слабый.
Yandex
Объявления
20.10.2014, 18:38     Как забрать данные из отработавшего потока?
Ответ Создать тему
Опции темы

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