2015-03-21 1 views
0

Благодарим за внимание.На Android, как продолжать работать, пока пользователь не остановится?

Вот сценарий: моя деятельность состоит в том, чтобы сделать простое симуляцию (игра, в которую играют два ИИ один против другого) несколько раз, и продолжать делать это, пока пользователь не нажмет кнопку. Полученные данные используются для улучшения ИИ (я уже закодировал эту часть и, похоже, работает).

Я хочу, чтобы активность отображала основную информацию, например, сколько игр уже было сыграно.

Я довольно новичок в разработке Android и Java. Я знаю, что мне нужно использовать отдельный поток для моделирования, но я не знаю, как его обрабатывать, поскольку я никогда не использовал отдельные потоки. Меня раздражает: имеет ли новый поток доступ к общедоступным методам и переменным класса, с которым он был запущен? Если да, то как?

Я уже прочитал документацию по темам на официальном сайте разработчиков Android.

+0

Вы делаете крючок в отдельном потоке, который проверяет, должен ли он завершиться. Есть много способов реализовать это, проще всего использовать статическую переменную, но я думаю, что ваш вопрос слишком широк, чтобы дать хороший ответ. что ты уже испробовал? – wvdz

+0

@popovitsj Ну я попытался запустить отдельный поток и иметь метод, который запускается одним нажатием кнопки и заканчивает действие. Но это не кажется правильным ... Кроме того, весь отдельный поток представляет собой цикл while (true), и это не похоже, что он работает. –

ответ

0

Экземпляр класса не привязан к какой-либо теме, такой как основной Thread, который ее создал. Тема, созданная в методе в классе, будет иметь доступ к частным членам этого класса. Он будет иметь доступ к публичным членам в любых случаях, которые он предоставляет его создателю, или может получить от общедоступного метода в другом месте (например, статический или контекст приложения).

Таким образом, при многопоточности вы должны быть осторожны, так как два потока могут одновременно обращаться к одним и тем же методам и переменным, и вы никогда не сможете быть уверенными, какой из них будет первым. Самый безопасный способ - сконструировать его так, чтобы только один поток «записывал» на переменные, а другие просто читали.

+0

Спасибо! Это выглядит полезным. Я посмотрю, разрешит ли она мою проблему. –

Смежные вопросы