android的app程序退出有几种方式:activity队列方式、广播方式。在这里介绍一下我实现该功能的方式--观察者模式。
方法的大概思路为:建立Activity基类,实现观察者接口,实现监听方法,finish掉本实例;在Application里面单例一个目标对象,当需要关闭程序的时候,调用目标对象的通知方法,通知所有观察者。
代码如下:
观察者接口
public interface Observer {
public void update(Subject subject);
}
目标对象基类
public class Subject {
private List<Observer> observers = new ArrayList<Observer>();
public void attach(Observer observer){
observers.add(observer);
}
public void detach(Observer observer){
observers.remove(observer);
}
protected void notifyObservers(){
for(Observer observer : observers){
observer.update(this);
}
}
}
目标对象子类(实现具体退出方法)
public class ApplicationSubject extends Subject {
public void exit(){
notifyObservers();
}
}
MyApplication类(在Manifest文件中将标签application的name改为本类的全限定名)
public class MyApplication extends Application {
private static ApplicationSubject applicationSubject;
public ApplicationSubject getApplicationSubject() {
if(applicationSubject == null) applicationSubject = new ApplicationSubject();
return applicationSubject;
}
}
Activity基类
public abstract class BaseActivity extends Activity implements Observer {
public MyApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
app = (MyApplication) this.getApplication();
app.getApplicationSubject().attach(this);
}
@Override
public void finish() {
// TODO Auto-generated method stub
app.getApplicationSubject().detach(this);
super.finish();
}
/**
* 关闭程序
*/
public void close() {
app.getApplicationSubject().exit();
};
@Override
public void update(Subject subject) {
// TODO Auto-generated method stub
this.finish();
}
}
写几个测试页面测试一下
public class ATestActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
startActivity(new Intent(this, BTestActivity.class));
}
}
public class BTestActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
close(); //在BTestActivity中调用close方法,发现A和B都关闭了
}
}
分享到:
相关推荐
下面将详细阐述Android中的观察者模式以及如何实现。 ### 1. 观察者模式的基本概念 观察者模式又称为发布-订阅模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
总结起来,观察者模式在Android开发中主要体现在BroadcastReceiver和ContentObserver的使用上,它们帮助开发者实现组件间的通信和数据同步,提高了代码的灵活性和可维护性。通过ContentProvider,Android提供了一个...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,...同时,现代编程语言和框架(如React的生命周期方法、Angular的事件机制等)也内置了观察者模式的概念,使得开发者可以更方便地使用和理解这一模式。
在这个背景下,我们以Android中的TextView为例,来深入探讨观察者模式在实际开发中的应用。 在Android系统中,TextView是一个用于显示文本的视图组件。它可以显示静态文本,也可以动态地更新内容,比如从网络获取...
4. **接口分离**:观察者模式鼓励接口分离原则,即主题不应该知道观察者具体是如何处理通知的,观察者也不应该知道主题的具体实现。这样,两者可以独立地变化和扩展。 5. **应用实例**:观察者模式广泛应用于各种...
为了实现观察者模式,你需要创建一个实现了`Observer`接口的类,这个类代表具体的观察者。在这个类中,你需要实现`update()`方法,定义当接收到通知时应执行的操作。 接下来,我们可以创建一个具体的`Observable`...
本文将详细讲解观察者模式的概念和实现,通过代码注释来解释各个组件的作用。 一、观察者模式的定义 观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,使得一个对象的状态发生变化时,所有依赖它...
在Android中,最常用的观察者模式实现是`BroadcastReceiver`和`ContentObserver`。 - **BroadcastReceiver**:广播接收者,用于监听全局事件,例如系统广播或者自定义广播。当接收到匹配的广播时,会回调`onReceive...
文件"Event"可能包含了这些类的定义和实现,以及一个主程序,用于创建主题对象,添加观察者,模拟状态变化并触发通知。通过阅读和分析这个代码,我们可以更深入地理解C++中观察者模式的实现细节。 总的来说,观察者...
请根据观察者模式,用Java语言设计并实现气象站程序。其中,部分代码已经写好,包括: • 观察者接口 • 主题接口 • 显示板接口 • 测试程序 请在此框架下,继续完成CurrentConditionsDisplay、ForecastDisplay...
在Android开发中,设计模式是提升代码质量和可维护性的重要工具。本文将深入探讨其中的一种...在实际项目中,观察者模式与其他设计模式(如工厂模式、单例模式)结合使用,可以构建出更健壮、可扩展的Android应用程序。
6. **回调函数**:在Android开发中,我们也经常使用回调函数来实现观察者模式,例如OnClickListener、OnCheckedChangeListener等,这些都是观察者模式的实例。 7. **订阅与退订**:为了防止内存泄漏,观察者在不再...
除了标准实现,还有很多其他语言和框架提供了观察者模式的支持,例如在C#中,可以使用System.ComponentModel.INotifyPropertyChanged接口来实现,而在JavaScript中,可以通过事件监听器或者发布/订阅模式来实现类似...
观察者模式的实现,使用list实现,C++编程思想还是设计模式都有介绍的,很好的
观察者模式的实现方式有很多种,根据不同的应用场景和需求,可以有完全不同的实现方式。下面是一种经典的实现方式: ```java public interface Subject { void registerObserver(Observer observer); void ...
在Android开发中,观察者模式(Observer Pattern)是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程,...
Android设计模式--观察者模式DEMO 观察者模式是一个使用频率非常高的模式,他最常用的地方是GUI系统和订阅-发布系统。 该模式的最重要的作用就是解耦,使观察者和被观察者之间依赖尽可能小,甚至好无依赖。
总的来说,"使用MFC实现观察者模式(Observer)同时兼顾多窗口之间传值"涉及到的关键点包括: 1. 理解观察者模式的基本概念和作用。 2. MFC的消息机制和消息映射表的使用。 3. 创建抽象观察者和被观察者类,定义...
EventBus是一款轻量级的事件总线库,它是Android实现观察者模式的一个优秀工具,特别适合解决组件之间的通信问题。下面我们将深入探讨如何使用EventBus实现GPS定位功能。 首先,理解EventBus的基本概念。EventBus是...
这通常涉及到使用Apple的Cocoa框架,它提供了类似NSNotificationCenter的机制,可以方便地实现观察者模式。在Objective-C++中,可以使用`addObserver:selector:name:object:`等方法来注册观察者,以及`...