в моем приложении для Android. У меня есть нить обновления, которая сохраняет все мои взгляды в актуальном состоянии.как перезапустить поток в android?
protected Thread UIUpdateThread = new Thread()
{
@Override
public void run()
{
while(true)
{
query_some_data_from_service(); // gets some "fresh" data from a service
UIUpdateHandler.sendEmptyMessage(0); // will update all ui elements with the new values
sleep(1234);
}
}
};
я начать эту тему в OnCreate() с
UIUpdateThread.start();
и все работает просто отлично :), когда я оставить активность (например, потому что я переключиться на другой вид деятельности) я называю
UIUpdateThread.interrupt();
внутри onStop(), чтобы предотвратить непрерывность работы нити. если я этого не сделаю, он будет продолжать работать, даже если я закрою приложение!?!? !!
проблема: как я верну эту нить, когда возвращаюсь из какой-либо другой деятельности к этой? run() не работает, вызывая начальный start() в каком-то другом методе, например onResume(), сбой приложения.
я уже пробовал много вещей, но ничего не похоже на работу :(
Я вырезал почти все тела нитей, так как это казалось несущественным для демонстрационных целей. «исходный» поток имеет бесконечный цикл, запрашивающий некоторые данные из службы в каждом раунде. Затем обработчик отвечает за фактическое отображение данных, полученных потоком. , так как этот поток больше не работает при возврате этого действия, мой ui не получает больше обновлений. :(Вот почему мне нужно как-то снова запустить поток ... – xenonite
решил это - см. мой ответ – xenonite
Таймер - лучший вариант для таких задач, особенно на встроенной платформе. Занятые петли на сервере - это одно, но на телефоне с его бит-батареей ОС может справиться с задачами планирования с регулярными интервалами намного лучше. – Nate