Skip to content

Instantly share code, notes, and snippets.

@anzfactory
Last active March 26, 2016 05:47
Show Gist options
  • Save anzfactory/1426e5879b215e94e4ac to your computer and use it in GitHub Desktop.
Save anzfactory/1426e5879b215e94e4ac to your computer and use it in GitHub Desktop.
NSNotificationCenterのようなことをandroidでもやるために
/**
* NSNotificationのようなもの
* 通知で送る情報が詰まったオブジェクト
*/
public class MyEventObject extends EventObject {
public static final String TAG = "MyEventObject";
public enum EventType {
Hoge,
HogeHoge
}
private EventType mEventType;
public MyEventObject(Object source, EventType eventType) {
super(source);
mEventType = eventType;
}
public EventType getEventType() {
return mEventType;
}
}
/**
* NSNotficationCenterのようなモノ
* 通知するものを受け取って、発行する
*/
public class MyObservable extends Observable {
public static final String TAG = "MyObservable";
private static MyObservable mInstace = null;
private MyObservable() {
super();
}
public static MyObservable getInstace() {
if (mInstace == null) {
mInstace = new MyObservable();
}
return mInstace;
}
/**
* 指定されたイベントを通知する
* @param eventObject
*/
public void notice(EventObject event) {
setChanged();
notifyObservers(event);
}
}
/**
* 受け取る方
*/
public class ReceiveActivity extends Activity implements Observer {
@Override
public void update(Observable observable, Object data) {
MyEventObject event = (MyEventObject)data;
switch (event.getEventType()) {
case EventType.Hoge:
// Hoge通知を受け取った時の処理
return;
case EventType.HogeHoge:
// HogeHoge通知を受け取った時の処理
return;
}
}
}
/**
* 例:送る方
*/
public class SendActivity extends Activity implements OnClickListener {
@Override
public void onClick(View v) {
MyEventObject event = new MyEventObject(this, EventType.Hoge);
MyObservable.getInstace().notice(event);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment