观察者发生改变 被观察者随之改变
第一步
public class App extends Application{
public BeiGuanChaZhe beiGuanChaZhe;
@Override
public void onCreate() {
super.onCreate();
beiGuanChaZhe = new BeiGuanChaZhe();
}
第二步
public class BeiGuanChaZhe extends Observable<Observer<String>> {
public void send(String str){
for (int i=0;i< mObservers.size();i++){
Observer<String> stringObserver = mObservers.get(i);
stringObserver.onChanged(str+i);
}
}
}
第三步
public class GuanCHaZhe implements Observer<String> {
@Override
public void onChanged(@Nullable String s) {
Log.e("tag",s);
}
}
第四部
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
private Button but;
private GuanCHaZhe guanCHaZhe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
guanCHaZhe = new GuanCHaZhe();
initView();
}
private void initView() {
but = (Button) findViewById(R.id.but);
but.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.but:
((App)getApplication()).beiGuanChaZhe.registerObserver(guanCHaZhe);
Intent intent = new Intent(this, Main3Activity.class);
startActivity(intent);
break;
}
}
}
第五步
public class Main3Activity extends AppCompatActivity implements View.OnClickListener {
private Button but2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
initView();
}
private void initView() {
but2 = (Button) findViewById(R.id.but2);
but2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.but2:
((App)getApplication()).beiGuanChaZhe.send("我是被观察着");
break;
}
}
}