Любые обновления пользовательского интерфейса в приложении Android должны происходить в потоке пользовательского интерфейса.Если вы создаете поток для работы в фоновом режиме, вы должны перенаправить результаты обратно в поток пользовательского интерфейса, прежде чем вы коснетесь просмотра.Вы можете использовать класс Handler
для выполнения маршалинга:
public class TestActivity extends Activity {
// Handler gets created on the UI-thread
private Handler mHandler = new Handler();
// This gets executed in a non-UI thread:
public void receiveMyMessage() {
final String str = receivedAllTheMessage();
mHandler.post(new Runnable() {
@Override
public void run() {
// This gets executed on the UI thread so it can safely modify Views
mTextView.setText(str);
}
});
}
Класс AsyncTask
упрощает многие детали для вас и также является тем, на что вы могли бы обратить внимание.Например, я полагаю, что он предоставляет вам пул потоков, чтобы помочь снизить часть затрат, связанных с порождением нового потока, каждый раз, когда вы хотите выполнить фоновую работу.