Android: Правильный способ пройти сообщение из фоновой резьбы в UI Тема UI?

Я много читал о нитках, обработчиках, петлях и т. Д., И я очень запутался. В моем приложении я хочу иметь первую активность начать фоновой работник. Этот фон фон будет постоянно запрашивать данные из розетки TCP и (надеюсь) опубликовать новую информацию в потоке пользовательского интерфейса, поскольку данные поступают. Если пользователь переходит на новую активность, фон должен продолжать делать это, но только отправлять разные сообщения в тему пользовательского интерфейса, чтобы он мог соответственно обновить новую макет.

Вот то, что у меня до сих пор ... это в моем главном файле активности

public class MyTCPTest extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // set the layout
        setContentView(R.layout.main);
        // create a handler to handle messages from bg thread
        Handler handler = new Handler();

        BgWorkerThread bgw = new BgWorkerThread();
        bgw.start();
 }

в другом файле, я определяю мою фоновую рабочую нить, как это ...

public class BgWorkerThread extends Thread {    
@Override
public void run(){

    while(true)
    {
        try {
        // simulate a delay (send request for data, receive and interpret response) 
        sleep(1000);

                    // How do I send data here to the UI thread?

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
} 

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

Наконец, когда интернет-интерфейс пользовательских интерфейсов должен быть уведомлен, что BGWorker должен быть уведомлен, чтобы он мог начать запрашивать данные, относящиеся к новой макете деятельности. Какой лучший способ сообщить рабочему изменению? Разве я не мог просто создать общественный метод в классе BGWorkerTread, который можно назвать, когда нагрузка на действия?

5
задан PICyourBrain 10 September 2011 в 04:02
поделиться