Пытаюсь разобраться с блютузом. За основу взял пример BluetoothChat. Выполняю соединение с устройством блютуз в одном активити (Activity_Bt_ListDevice). После удачного соединения запускается поток ConnectedThread реализованный в классе BluetoothService. Нужно перейти в другую активити (реализовано древовидное меню, например Activity_ReadData) для выбора действия с данными полученными в потоке.
Вопрос: Как работать с запущенным потоком ConnectedThread в другой активности?
Еще в классе BluetoothService реализован метод StartRead(boolean), который изменяет переменную класса public volatile boolean StartRead. Сама переменная служит для запуска/остановки передачи данных от потока к активити.
Вопрос: Как сохранить доступ данного метода к запущенному потоку при запуске другой активности.
Или как вариант: запускать сервис и использовать биндинг и броадкастресивер? Как рекомендовано сдесь viewtopic.php?f=38&t=1850
Один поток - несколько активностей
Re: Один поток - несколько активностей
Переформулирую вопрос:
Есть две активити и один класс (BtClass) в котором реализован поток (поток (CalculatePrimes) после запуска каждую секунду инкриминирует переменную i пока переменная класса public volatile boolean finished не станет true). Переменная finished изменяется методом GetThread(boolean) класса BtClass. В первом активити запускается конструктор класса BtClass и запускается поток CalculatePrimes. После перехода во второе активити нужно получить доступ к запущенному потоку чтоб изменить переменную.
Пробовал после запуска второго активити запускать конструктор класса BtClass чтоб получить ссылку на объект, но соответственно получаю ссылку на новый экземпляр класса и соответственно метод GetThread(boolean) не имеет доступа к переменной finished уже запущенного потока.
Подскажите как из первого активити передать ссылку на уже созданный экземпляр BtClass второму активити?
Есть две активити и один класс (BtClass) в котором реализован поток (поток (CalculatePrimes) после запуска каждую секунду инкриминирует переменную i пока переменная класса public volatile boolean finished не станет true). Переменная finished изменяется методом GetThread(boolean) класса BtClass. В первом активити запускается конструктор класса BtClass и запускается поток CalculatePrimes. После перехода во второе активити нужно получить доступ к запущенному потоку чтоб изменить переменную.
Пробовал после запуска второго активити запускать конструктор класса BtClass чтоб получить ссылку на объект, но соответственно получаю ссылку на новый экземпляр класса и соответственно метод GetThread(boolean) не имеет доступа к переменной finished уже запущенного потока.
Подскажите как из первого активити передать ссылку на уже созданный экземпляр BtClass второму активити?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Один поток - несколько активностей
Еще можно синглтон использовать, но сервис все равно более правильный вариант.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Один поток - несколько активностей
Спасибо. Как раз и копаю в эту сторону.