0
点赞
收藏
分享

微信扫一扫

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


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 条评论