Возможно, вы хотите посмотреть на использование AysncTask. Если вы сделаете это, вы захотите вставить значения в соответствующую вкладку в методе onProgressUpdate (). Поскольку аргументы, передаваемые этому методу, на самом деле не могут в достаточной степени представлять входящие данные, вам просто нужно поместить новые данные куда-нибудь, чтобы к ним можно было получить доступ из метода onProgressUpdate (), возможно, в переменной-члене. Помните, что доступ к этой переменной-члену, вероятно, необходимо синхронизировать, поскольку код в onProgressUpdate выполняется в основном потоке приложения, а код в doInBackground - в фоновом потоке, поэтому код в этих методах будет выполняться одновременно.
AsyncTask прозрачно использует обработчики для вас, но вы можете использовать необработанные обработчики, если хотите. Основные вещи, которые вы должны иметь в виду:
- Вы можете / должны обновлять пользовательский интерфейс только из основного потока приложения
- Код в обработчике будет всегда выполняться в потоке, создавшем обработчик
- Обработчики должны быть созданы в потоке с лупером (основной поток имеет лупер)
- Будьте осторожны, создавая Handler как анонимный внутренний класс или передавая ему ссылку на Context, так как это может привести к утечке памяти
Возможно, поток должен вызываться службой, но если поток должен существовать только при наличии пользовательского интерфейса для обновления, это может не иметь особого смысла.