Android 实现下载时主界面与详细界面一致更新

来源:互联网 发布:钱夫人雪梨淘宝店 编辑:程序博客网 时间:2024/06/15 23:36

1、创建监听管理类

public class ObserverManager {    private List<Observer> observers = new ArrayList<ObserverManager.Observer>();    public interface Observer {        public void update();        public void updateState();    }    public void addObserver(Observer observer) {        if (observer == null) {            throw new RuntimeException();        }        synchronized (this) {            if (!observers.contains(observer)) {                observers.add(observer);            }        }    }    public void notifyObservers() {        for (Observer observer : observers) {            observer.update();        }    }    public void notifyState() {        for (Observer observer : observers) {            observer.updateState();        }    }}

2、创建详细界面

public class DetailView extends View  implements Observer {    public DetailView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public DetailView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public DetailView(Context context) {        super(context);    }    @Override    public void update() {        System.out.println("update");    }    @Override    public void updateState() {        System.out.println("updateState");    }}

3、创建主界面
1)在初始化时添加监听

    mObserverManager.addObserver(new DetailView(this));

2)在主界面点击下载时通知详细界面更新

public class MainActivity extends Activity {    private ObserverManager mObserverManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mObserverManager = new ObserverManager();        mObserverManager.addObserver(new DetailView(this));    }    public void click(View v) {        //TODO 比如开始下载        mObserverManager.notifyUpdate();//     }}
0 0
原创粉丝点击