回调与观察者模式的实现原理:废话不多说,直接上Demo回调的原理:
观察者模式:
A类中定义一个被观察者画家
package com.example.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
import java.util.ArrayList;
/**
* user: uidq0530 ,date: 2017-03-29.
* description:
*
* @author xhunmon
*/
public class A extends View {
private Paint mPaint;
public A(Context context) {
super(context);
mPaint = new Paint();
}
//1.进来的人给了一张座子
public interface OnAListener{
//可以看画家绘制
void look();
}
//2.一个房间
private ArrayList<OnAListener> lists = new ArrayList<>();
//3.进入房间的通道
public void register(OnAListener listener){
lists.add(listener);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("画家画画", 50, 50, mPaint);
//4.只有房间的人能看画家绘制
for(int i=0 ;i<lists.size(); i++){
lists.get(i).look();
}
}
//5.出去房间的通道
public void unregister(OnAListener listener){
if(lists.contains(listener))
lists.remove(listener);
}
}
B类中是观察者人,人可以有很多个,但是画家只能有一个
package com.example.test3;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import com.example.view.A;
/**
* user: uidq0530 ,date: 2017-03-29.
* description:
*
* @author xhunmon
*/
public class B extends Activity {
private A.OnAListener mListener;
private A mA;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mA = new A(this);
//1.创建一个人
mListener = new A.OnAListener() {
//3.当进入房间之后,人才能看到画家绘制
@Override
public void look() {
Toast.makeText(B.this, "我注册了,就可以监听A中画家是否在绘制了", Toast.LENGTH_SHORT).show();
}
};
//2.进入房间
mA.register(mListener);
setContentView(mA);
}
@Override
protected void onDestroy() {
super.onDestroy();
//4.出去房间
if(mListener != null)
mA.unregister(mListener);
}
}
总结:最常见的观察者是广播,而观察者的本质就是回调,所以实现观察者的其实就是一堆回调。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 回调
# 观察者模式
# Android使用观察者模式Observer实现网络状态监听
# 浅谈Android设计模式学习之观察者模式
# Android编程设计模式之观察者模式实例详解
# Android观察者模式实例分析
# android开发中使用java观察者模式
# Android源码学习之观察者模式应用及优点介绍
# 详解Android观察者模式的使用与优劣
# 的人
# 类中
# 有很多
# 给了
# 能看
# 多说
# 最常见
# 大家多多
# 就可以
# 有一个
# 能看到
# user
# ArrayList
# View
# Paint
# Canvas
# util
# graphics
# date
相关文章:
建站之星展会模板:智能建站与自助搭建高效解决方案
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站之星导航如何优化提升用户体验?
简单实现Android文件上传
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
XML的“混合内容”是什么 怎么用DTD或XSD定义
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何配置支付宝与微信支付功能?
微课制作网站有哪些,微课网怎么进?
Bpmn 2.0的XML文件怎么画流程图
香港服务器如何优化才能显著提升网站加载速度?
网站制作新手教程,新手建设一个网站需要注意些什么?
专业网站建设制作报价,网页设计制作要考什么证?
Swift开发中switch语句值绑定模式
如何使用Golang安装API文档生成工具_快速生成接口文档
北京制作网站的公司,北京铁路集团官方网站?
如何在建站宝盒中设置产品搜索功能?
网站制作价目表怎么做,珍爱网婚介费用多少?
存储型VPS适合搭建中小型网站吗?
行程制作网站有哪些,第三方机票电子行程单怎么开?
制作网页的网站有哪些,电脑上怎么做网页?
广州建站公司哪家好?十大优质服务商推荐
如何用腾讯建站主机快速创建免费网站?
简单实现Android验证码
建站VPS推荐:2025年高性能服务器配置指南
微信小程序制作网站有哪些,微信小程序需要做网站吗?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何在IIS管理器中快速创建并配置网站?
建站之星如何保障用户数据免受黑客入侵?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
如何续费美橙建站之星域名及服务?
已有域名如何免费搭建网站?
C#如何使用XPathNavigator高效查询XML
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
济南网站制作的价格,历城一职专官方网站?
建站主机如何安装配置?新手必看操作指南
宝塔建站教程:一键部署配置流程与SEO优化实战指南
c++怎么用jemalloc c++替换默认内存分配器【性能】
临沂网站制作公司有哪些,临沂第四中学官网?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
php json中文编码为null的解决办法
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
建站之星各版本价格是多少?
建站之星代理费用多少?最新价格详情介绍
如何确保西部建站助手FTP传输的安全性?
定制建站哪家更专业可靠?推荐榜单揭晓
用v-html解决Vue.js渲染中html标签不被解析的问题
*请认真填写需求信息,我们会在24小时内与您取得联系。