Я создаю приложение, которое опирается на данные через Интернет.Эти данные являются общими для всех видов деятельности.Кроме того, данные будут обновляться, например, обновляя их каждые две или три минуты.Поэтому я создал класс обработчика данных, который должен обрабатывать все, что связано с загрузкой, анализом данных и тому подобным.Иногда он получает команду от Activity для обновления данных.
Проблема в том, как обновить пользовательский интерфейс в деятельности, когда новые данные становятся доступными в обработчике данных.Если бы обработчик данных работал, я мог бы просто опубликовать обработчик для потока пользовательского интерфейса, чтобы обновить его.Однако я не знаю, как это сделать из этого базового класса.Любой совет?
Вот примерный код для трех классов:
/**
* The data handler class itself
*/
public class DataHandler {
Object data;
public void getData () {
// starts a thread (HTTP query) to get data
}
private class dataReceived (Object data) {
// receives data
this.data = data;
// TRIGGER updateUI() in MyActivity! HOW?
}
}
/**
* Application class. I'm planning to keep data handler here, and reference it from activities when required.
*/
public class MyApplication extends Application {
private DataHandler dataHandler;
public DataHandler getDataHandler() {
return dataHandler;
}
public void onCreate() {
DataHandler dataHandler = new DataHandler();
}
}
/**
* Activity
*/
public class MyActivity extends Activity {
DataHandler dataHandler;
public void onCreate(Bundle o) {
dataHandler = ((MyApplication) getApplication()).getDataHandler();
}
public void onResume() {
// trigger data refresh (OBS! This could also be by a button press etc.)
dataHandler.getData();
}
public void updateUI() {
// UPDATE UI
// should be called on DataHandler when data is received. HOW?
}
}