Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
korsaj
152 / 119 / 11
Регистрация: 16.08.2013
Сообщений: 576
1

Один поток - несколько активностей

08.09.2013, 18:27. Просмотров 1181. Ответов 5
Метки нет (Все метки)

Пытаюсь разобраться с блютузом. За основу взял пример BluetoothChat. Выполняю соединение с устройством блютуз в одном активити (Activity_Bt_ListDevice). После удачного соединения запускается поток ConnectedThread реализованный в классе BluetoothService. Нужно перейти в другую активити (реализовано древовидное меню, например Activity_ReadData) для выбора действия с данными полученными в потоке.

Вопрос: Как работать с запущенным потоком ConnectedThread в другой активности?

Еще в классе BluetoothService реализован метод StartRead(boolean), который изменяет переменную класса public volatile boolean StartRead. Сама переменная служит для запуска/остановки передачи данных от потока к активити.

Вопрос: Как сохранить доступ данного метода к запущенному потоку при запуске другой активности.

Добавлено через 19 часов 58 минут
Переформулирую вопрос:
Есть две активити и один класс (BtClass) в котором реализован поток (поток (CalculatePrimes) после запуска каждую секунду инкриминирует переменную i пока переменная класса public volatile boolean finished не станет true). Переменная finished изменяется методом GetThread(boolean) класса BtClass. В первом активити запускается конструктор класса BtClass и запускается поток CalculatePrimes. После перехода во второе активити нужно получить доступ к запущенному потоку чтоб изменить переменную.
Пробовал после запуска второго активити запускать конструктор класса BtClass чтоб получить ссылку на объект, но соответственно получаю ссылку на новый экземпляр класса и соответственно метод GetThread(boolean) не имеет доступа к переменной finished уже запущенного потока.

Подскажите как из первого активити передать ссылку на уже созданный экземпляр BtClass второму активити?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 18:27
Ответы с готовыми решениями:

Несколько Активностей и кнопки
Не переключается на другую активность по нажатию кнопки, хотя в манифесте прописано. Подскажите что...

База данных и несколько активностей
У приложения есть БД, данные из которой нужно доставать и каким-то образом с ними взаимодействовать...

Один ActionBar дл всех активностей
Всем привет! Есть ActionBar который должен выглядеть одинаково для всех активностей.Но при этом...

Стэки Активностей
Всем привет. Подскажите где ошибся. Нужна небольшая помощь.Много читал про стэки но все ровно не...

Наслоение активностей
Всё ниже: private GridView.OnItemClickListener gridviewOnItemClickListener = new...

5
MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
08.09.2013, 19:04 2
korsaj, я не читал весь вопрос... Ты не пробовал ту переменную объявить публичной и статической? (к ней будет доступ с другой активити)
1
korsaj
152 / 119 / 11
Регистрация: 16.08.2013
Сообщений: 576
08.09.2013, 19:50  [ТС] 3
Да тут даже не в переменной загвоздка, а в потоке который запущен в системе, от него нужно получать данные в других дочерних активностях.
Попробовал реализовать все на пальцах (описано в переформулеровке) и увидел что теряю ссылку не созданный в первом активити экземпляр класса. Не знаю как передать эту ссылку по цепочке дочерним активити.
Уже рассматриваю варианты сервис и синглтона..
0
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.09.2013, 20:29 4
броткаст ресивер не пробовали?
1
korsaj
152 / 119 / 11
Регистрация: 16.08.2013
Сообщений: 576
09.09.2013, 17:27  [ТС] 5
Как раз наткнулся на него когда читал про сервис. Только пока не знаю можно ли его использовать с потоками. Но видимо что можно, раз вы подсказываете. А биндинг можно использовать?

Добавлено через 9 минут
Нашел ответ на свой вопрос. Биндинг используется для подключения к сервису.
Буду разбираться с бродкастресивером. Что получится отпишусь.

Добавлено через 20 часов 10 минут
Получилось работать с бродкастрессивером. Но только в спарке активити - сервис. А хотелось бы активити - поток (запущенный первым активити). Видимо такой возможности нет в андроиде так как активити находящаяся в стеке может быть уничтожена и следовательно работающий поток вместе с ней, а работая с сервисом можно предупредить такую ситуацию.
Если я не прав - подскажите в чем и как реализовать правильно работу с потоком.
0
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.09.2013, 23:50 6
Цитата Сообщение от korsaj Посмотреть сообщение
активити находящаяся в стеке может быть уничтожена и следовательно работающий поток вместе с ней
не, поток будет себе дальше работать, но если вам нужно чтобы что-то постоянно выполнялось в бекграунде, то это однозначно сервис.
1
09.09.2013, 23:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 23:50

ActionBar переход активностей
как сделать что бы при выборе элемента tab переходило на другую активность ...

Жизненный цикл активностей
Здравствуйте, уважаемые форумчане. Столкнулся с небольшой проблемой, думаю вы сможете мне помочь. ...

Анимации открытия и закрытия активностей
Для анимации перехода между активностями использовал метод...


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

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

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