Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Игорёчег
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 18

Работа с изображениями в новом потоке

21.03.2013, 19:51. Показов 1852. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня возникла проблемка с потоками, а собственно, не выходит работать с изображениями в новом потоке.
На простом примере пробовал это реализовать но не выходит.
Кто может, подкиньте может пару идей как исправить ошибки или более действенный метод для работы с изображениями в новом потоке.
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
49
50
51
52
53
54
55
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
 
public class MainActivity extends Activity implements OnClickListener {
 
    public ImageView img = (ImageView)findViewById(R.id.imageView1);
    Thread thread;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
    }
 
    @Override
    public void onClick(View v) {
    
        thread = new Thread();
        thread.execute();
        
        
    }
        public class Thread extends AsyncTask<Void, Void, Void> {
 
    MainActivity ma = new MainActivity();
    
    float x, y, dy = 5;
    
    protected void onPreExecute()
    {
        super.onPreExecute();
        
    }
    
 
    protected Void doInBackground(Void... params) {
        
        while(y<300){
        y = ma.img.getY();
        ma.img.setY(y);
        y+= dy;               //двигаем картинку по активити
        }
        return null;
    }
    
    protected void onPostExecute(Void result)
    {
        super.onPostExecute(result);
    }
 
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2013, 19:51
Ответы с готовыми решениями:

MessageBox в новом потоке
Нужен текст для создания messagebox в новом потоке. Хочу чтоб параллельно двигалась картинка і показалась MessageBox.

конструктор в новом потоке?
Добрый день, народ. Не могу решить задачу с потоками, перепробовал миллион способов... Как сделать так, чтоб конструктор объекта...

ServerSocket в новом потоке
По нажатию на кнопку запускаю новый поток. в Потоке открывается порт и ждет подключения: public void onClick(View view) { // TODO...

11
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.03.2013, 20:36
y = ma.img.getY();
ma.img.setY(y);
вы же сетаете то же самое число что получили....
1
0x5B4C322291BD52AE
 Аватар для c4sp3r
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
21.03.2013, 22:02
Цитата Сообщение от V0v1k Посмотреть сообщение
y = ma.img.getY();
ma.img.setY(y);
вы же сетаете то же самое число что получили....
Да это все фигня он не в основном потоке делает это, да и вообще каша какая-то получилась
0
 Аватар для dr_yand
157 / 138 / 15
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
21.03.2013, 23:09
Ну вообще в бэкграунде работать с визуальными компонентами не очень хорошо
0
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 22:43
Цитата Сообщение от dr_yand Посмотреть сообщение
Ну вообще в бэкграунде работать с визуальными компонентами не очень хорошо
Работа с GUI в AsyncTask'e это вполне нормально и правильно...
0
0x5B4C322291BD52AE
 Аватар для c4sp3r
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
23.03.2013, 23:33
lifestyle, скорее всего он имел ввиду не работать с элементами UI в методе doInBackground так как это не есть гуд.
0
 Аватар для dr_yand
157 / 138 / 15
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
24.03.2013, 09:21
спасибо,c4sp3r,
я как раз имел ввиду что с компонентами лучше работать в
Java
1
2
3
4
5
protected void onPostExecute(String result) {
}
@Override
protected void onProgressUpdate(Integer... values) {
}
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
24.03.2013, 14:00
насколько я знаю, при обращении из doInBackground() в основной поток (поток GUI) ни к чему хорошему не приведет. В этом методе нужно производить сложные операции чтобы не тормозить интерфейс.
Да, еще хотел бы порекомендовать не называть свои классы также как стандартные - это я про Thread.
1
 Аватар для Игорёчег
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 18
24.03.2013, 17:52  [ТС]
Цитата Сообщение от dr_yand Посмотреть сообщение
спасибо,c4sp3r,
я как раз имел ввиду что с компонентами лучше работать в
Java
1
2
3
4
5
protected void onPostExecute(String result) {
}
@Override
protected void onProgressUpdate(Integer... values) {
}
Тоесть, допустим двигать компоненты нужно в именно в этих 2-х методах?
А делать задержки между итерациями в методе doInBackground?
0
0x5B4C322291BD52AE
 Аватар для c4sp3r
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
24.03.2013, 18:02
Игорёчег, Да тяжелую (длительную) вычеслительную работу например работа с БД, сетевые операции и т.п.
делаешь в doInBackground а все что касается элементов (виджетов) двигать, обновлять текст в остальных которые работают в основном потоке. В доках гугла его называют UI thread ты из doInBackground метода возвращаешь результат этой тяжелой работы в эти методы.

Не по теме:

п.с. ты все таки проигнорировал наши советы про чтение дополнительной литературы например на http://startandroid.ru все тоже самое объясняют да и с примерами.

0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.03.2013, 13:13
для простой задержки в циклическом выполнении действий над View можно использовать postDelayed
примерно так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
private Runnable r;
....
r =  new Runnable() {
            
            @Override
            public void run() {
                                 ....
                view.postDelayed(r, 100);
                
            }
        };
        view.postDelayed(r, 100);
1
26.03.2013, 19:05

Не по теме:

Цитата Сообщение от kvaka Посмотреть сообщение
насколько я знаю, при обращении из doInBackground() в основной поток (поток GUI) ни к чему хорошему не приведет. В этом методе нужно производить сложные операции чтобы не тормозить интерфейс.
Да, еще хотел бы порекомендовать не называть свои классы также как стандартные - это я про Thread.
Ты прав на 1000% натыкался на таких вот умников на работе да не мог понять что лажа пока не посмотрел в класс и не прозрел что он самописный))))) самая жесть была с таким классом и переписанным interrupt'ом)))))))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2013, 19:05
Помогаю со студенческими работами здесь

Handlers в новом потоке
Почему не могу создать handlers в новом потоке ? Thread streamThread = new Thread(new Runnable() { public void run() { ...

Утечка памяти. Функция работы с изображениями выполняется в стороннем потоке.
Доброго времени суток! Не могу решить проблему(( Есть функция работы с изображениями и выполняется эта функция в стороннем потоке... ...

Запуск метода в новом потоке
Добрый день, помогите решить задания, у меня есть treeview, где есть метод на события BeforeExpand, мне нужно выполнять его в новом потоке,...

Вызов методов в новом потоке
Например, вы создали простое приложение, которое работает в одном потоке и вас все устраивает. Но иногда в приложении вызывается звуковой...

Post,Get запрос в новом потоке
Как переписать код чтобы было возможным отправить запрос на android 4.0.3? Возникает ошибка, читал что это от того что в главном потоке...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru