Android, , , . , , , , . - Threading Activity. . . POJO, SSCCE . , , - , EventBus.
public class Test {
public static void main(String[] args) throws InterruptedException {
MyThread t = new MyThread();
t.addObserver(new NonActivityObserver());
t.addObserver(new ActivityDecendent());
new Thread(t).start();
Thread.sleep(Long.MAX_VALUE);
}
public static class MyThread implements Runnable
{
private ArrayList<Observer> list = new ArrayList<Observer>();
public void addObserver(Observer arg0) {
synchronized (list) {
list.add(arg0);
}
}
@Override
public void run()
{
synchronized(list)
{
for(final Observer o : list) {
try {
Activity act = (Activity)o;
act.runOnUiThread(new Runnable() {
@Override
public void run() {
Event event = new Event("From the activity runOnUiThread method");
o.handleEvent(event);
}
});
}
catch (Exception e) {
Event event = new Event("From observers handle event method");
o.handleEvent(event);
}
}
}
}
}
public static interface Observer {
public void handleEvent(Event e);
}
public static class Event {
private String message;
public Event(String message) {
this.message = message;
}
public void talk() {
System.out.println(message);
}
}
public static class NonActivityObserver implements Observer {
@Override
public void handleEvent(Event e) {
e.talk();
}
}
public static class ActivityDecendent extends Activity implements Observer {
@Override
public void handleEvent(Event e) {
e.talk();
}
}
public static class Activity {
public void runOnUiThread(Runnable r) {
new Thread(r).start();
}
}
}
:
From observers handle event method
From the activity runOnUiThread method
, ... , .