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

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

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Потокобезопасный вызов процедур через Handler - Программирование Android

04.11.2013, 00:21. Просмотров 454. Ответов 2
Метки нет (Все метки)

Пытаюсь написать потокобезопасные сообщения через через Handler.

Примерно это выглядит ТАК:

Java
1
2
3
4
5
6
7
private static Handler Tread1_Handler = new Handler(); // заготовка для синхронизации с основным потоком!
private Context cont; // =this
 
...
Tread1_Handler.post(new Runnable() {public void run() { // синхронизируем
   Toast.makeText(cont, "HELLO!", Toast.LENGTH_LONG).show();
}});
Все работает... но! Как мне ПЕРЕДАТЬ потоко-безопасно несколько параметров разного типа в конкретно ЭТОТ вызов потока? Например заменить HELLO на String mess? Передать булеан для LONG или SHORT?
Если делать это глобальными переменными, то при вызове подряд двух сообщений могу получить одинаковый результат - выполнение первого вызова началось только после заполнения вторых параметров.

Пока что решаю это списком типа PUSH и POP, но это не удобно... Подозреваю что есть более простое ГОТОВОЕ решение! Но как??? Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 00:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потокобезопасный вызов процедур через Handler (Программирование Android):

Handler - Программирование Android
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import...

Handler - Программирование Android
Вот допустим обьект Handler был создан в активити(то есть в главном потоке). И мы запускаем через этот Handler (его метод post) кусок кода...

Не работает Handler - Программирование Android
Я нахожусь на 66 уроке startandroid, здесь упоминается Handler. Почему то отсутствуют у меня методы, которые описываются тут. Вот фрагмент...

Handler timer - Программирование Android
Добрый вечер. С помощью какого метода в Handler http://developer.android.com/reference/android/os/Handler.html(беда пока с английским) ,...

Handler vs Service vs AsynkTask - Программирование Android
Есть 2 Activity, пусть A1 и A2. В методе onCreate() Activity A1 запускается новый поток, в котором определяются координаты местоположения...

Handler, поток не останавливается - Программирование Android
Добрый вечер. Не могу остановить таймер, при переходе на другую Activity. Возможно ли это вообще? Code: mport...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
04.11.2013, 00:33 #2
1. Сделать метод synchronized.
2. Вызвать его.
3. Готово. Вы восхитительны.
Java
1
2
3
4
5
6
7
8
public synchronized void method(final String param1, final long param2) {
Tread1_Handler.post(new Runnable() {
     @Override
     public void run() {
          Toast.makeText(cont, param1, Toast.LENGTH_LONG).show();
     }
});
}
А еще есть volatile (работает корректно, кажется, только с 4.0)
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.11.2013, 01:33  [ТС] #3
То что нужно! Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 01:33
Привет! Вот еще темы с ответами:

Handler и интервал времени - Программирование Android
Создаю хэндлер: Handler h = new Handler(); h.post(obrtimer); Runnable obrtimer = new Runnable() { public void run() { ...

Про Handler и ProgressBar - Программирование Android
Есть 2 кнопки - Start и Stop, соответственно запуск и остановка прогресса в ProgressBar, запуск каждый раз идет с нуля. Если нажать...

Потоки (Handler внутри synchronized) - Программирование Android
private Handler Ocnova = new Handler(); private Object sync = new Object(); class newThread extends Thread { //...String mes..... ...

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


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

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

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