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观察者模式(最简单实用的观察者模式)
运用观察者模式及MVC模式的整合,是javaWeb的简单的实现了选民投票
设计模式-观察者模式(讲解及其实现代码)
设计模式之观察者模式Java版本实现和UML类设计图
请根据观察者模式,用Java语言设计并实现气象站程序。其中,部分代码已经写好,包括: • 观察者接口 • 主题接口 • 显示板接口 • 测试程序 请在此框架下,继续完成CurrentConditionsDisplay、ForecastDisplay...
android 观察者模式示例代码 android studio kotlin代码 基于java.uitl.*
这个代码主要以Android中的TextView发生变化,而凡是订阅了此类消息的实体类对象均能够打印出日志。例子很简单,起抛砖引玉,希望大家能够理解观察者模式在Android中的应用
NULL 博文链接:https://hejiawangjava.iteye.com/blog/2251781
Android设计模式--观察者模式DEMO 观察者模式是一个使用频率非常高的模式,他最常用的地方是GUI系统和订阅-发布系统。 该模式的最重要的作用就是解耦,使观察者和被观察者之间依赖尽可能小,甚至好无依赖。
观察者模式的实现,使用list实现,C++编程思想还是设计模式都有介绍的,很好的
观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。...
Android观察者模式简单实现Demo,同步博文http://blog.csdn.net/qq_28690547/article/details/50661603
效果见博客 博客地址:http://blog.csdn.net/pangzaifei/article/details/43155997
观察者模式 c++ 工程角度实现
观察者模式在android中的小样例 通过按钮增加观察者 Observer 并且维护一个观察者list 当被观察者状态变化的时候 所有的观察者都收到了通知 并且所有的观察者都更新了自己的信息 通过update方法
java实现观察者设计模式,利用ApplicationListener和ApplicationEvent。Test包里有测试代码
观察者模式for android demo 观察者模式for android demo
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
对应的博客链接:http://blog.csdn.net/t1234xy4/article/details/52432559#
观察者模式的 C++ 实现, 使用标准C++,在XCode实现。