搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小蓝xlanll
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
大学生会计搜题用什么软件?这三款足够解决问题 #微信#其他#知识分享_会计计算问题在哪搜
2
怎么玩ChatGPT?解锁玩ChatGPT玩法_chapgpt 怎么玩
3
大数据——Mapreduce学习总结_mapreduce实验心得
4
python用户画像数据分析系统_csdn python 客户画像
5
python零基础入门到精通,python入门到精通教程
6
常州开放大学计算机考试题库,2020年国家开放大学《统计学原理》章节测试题答案.docx...
7
全球首位AI程序员诞生,技术革新还是职业威胁?
8
【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)
9
Spark性能调优总结
10
《ROS2机器人建模URDF》8.3动手创建一个移动机器人_ros2 双差速模型
当前位置:
article
> 正文
匿名内部类,异步回调浅析_匿名内部类的回调是异步的吗
作者:小蓝xlanll | 2024-06-07 00:43:13
赞
踩
匿名内部类的回调是异步的吗
这个只是自己记录的自己看的,语法上不太严谨,逻辑还是清楚的
回调
(基础版):
A类里的AA函数不会做某事,就利用自己里面的CC函数调用B类里的BB函数做这件事,BB的参数里面有A类参数,BB把自己的步骤执行完毕后,再调用AA执行后面的操作(就是回调,回头再调)。
A(不会做)---调用B的BB方法---传入必要的参数,和自己本身----B.BB()被调用,协助A完成操作----再调用A的方法---表面上看上去是A操作的
A{
AA(x,y){}
CC(){
A=new A();
B=new B();
//在此处对x,y进行操作,因为A不会才委托给B的
B.BB(x,y,A);
}
}
B{
BB(x,y,A){
.....
//此处执行A类不会的东西,比如对x,y的处理
A(x,y){}//回调
}
}
回调(高级版):
把对象作为参数传进去,完全暴露,而且不安全
再次升级(匿名内部类):
B 直接调用 A的匿名内部类,直接把A的存在隐藏掉,因为A就是new出来的匿名类,程序的关键功能都是B来实现的,回调A的方法也是在B内实现的,所以不需要建立一个中间对象,代码更洁净,(逻辑更奇怪)
B不用关心A是什么类?直接按照已经写好的逻辑执行,只要A实现了相关的接口
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
public class RoomMate {
// 这里可以加线程,如果有其他的动作可以让他先执行,这样就避免了卡死现象,所以在 前台调接口 里面用的比较多
public void getAnswer(String homework, DoHomeWork someone)
{
if("1+1=?".equals(homework)){
someone.doHomeWork(homework, "2");
}else{
someone.doHomeWork(homework, "(空白)");
}
}
public static void main(String[] args) {
RoomMate roomMate = new RoomMate();
roomMate.getAnswer("1+1=?", new DoHomeWork() {
@Override
public void doHomeWork(String question, String answer){
//此处可以加上耗时操作
System.out.println("问题:"+question+" 答案:"+answer);
}
});
}
}
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
下面的调用匿名内部类,然后回调其中的方法
onsuccess , onfailure方法就相当于重写,实际实现了业务逻辑
new EPlusHelper().getDoctorContact(0, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
org.json.JSONObject response) {
Log.e("TAG", response.toString());
UserListModel model = JSON.parseObject(response.toString(),
UserListModel.class);
if (model.ok()) {
int conNum=model.getFeedback().getContacts().size();
tvConNum.setText(conNum+"人");
Log.e("tag", model.getFeedback().getContacts().toString());
} else {
// JSToastUitl.toast("网络异常");
}
};
@Override
public void onFailure(int statusCode, Header[] headers,
Throwable throwable, org.json.JSONObject errorResponse) {
// TODO Auto-generated method stub
super.onFailure(statusCode, headers, throwable, errorResponse);
JSToastUitl.toast("网络异常");
}
});
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
AsyncHttpResponseHandler 接收请求结果,一般重写onSuccess及onFailure接收请求成功或失败的消息,还有onStart,onFinish等消息。
下面的即是helper的实际操作,先操作param,然后asyncHttpClient.post这一句里面实现了onsuccess和onfailure方法的逻辑
此处按理说应该是 responseHandler.onSuccess,onFailure(params)方法,为什么要用 asyncHttpClient.post,这一步之后执行的是
this.threadPool.submit(new AsyncHttpRequest(paramDefaultHttpClient, paramHttpContext, paramHttpUriRequest, paramAsyncHttpResponseHandler));
发送到线程池
AsyncHttpRequest 继承自Runnabler,被submit至线程池执行网络请求并发送start,success等消息,虽然没看到源码,但是这个的success里面肯定写的是responseHandler.onSuccess方法
public void getDoctorContact(int type,JsonHttpResponseHandler responseHandler) {
JSONObject params = new JSONObject();
params.put("doctorId", PrefsUtil.getCustomerId());
params.put("type", type);
String url = BASE_URL + "doctor/contacts";
try {
asyncHttpClient.post(context, url, setEntity(params), null, responseHandler);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
JSToastUitl.toast("网络异常");
}
}
基本上所有的匿名内部类都是是回调,所有的异步回调都有线程....感觉分析的没什么屌用诶
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小蓝xlanll/article/detail/683248
推荐阅读
article
Java
中的
内部
类
和匿名
内部
类
详解(
嵌套
类
)_
java
内部
类
需要实现
序列化
吗...
Java
允许你在另一个
类
中定义一个
类
。......}}
嵌套
类
分为两
类
,静态
嵌套
类
和非静态
嵌套
类
,其中非静态
嵌套
类
称为内...
赞
踩
article
redis
cluster
集群 HA 原理和实操(史上最全、
面试
必备
)_
redis
ha
...
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 ...
赞
踩
article
经典
链表
oj
题
...
下面画图来看看下面是代码。经典
链表
oj
题
返回
链表
中倒数第K个节...
赞
踩
article
vue
根据
url
下载
文件_
vue
根据
url
下载
文件...
【代码】
vue
根据
url
下载
文件。_
vue
根据
url
下载
文件
vue
根据
url
下载
文件 dow...
赞
踩
article
女生
适合
学
产品
经理
吗?
有
什么
优势
?_女孩
适合
做
产品
经理
吗...
互联网
产品
经理
没
有
明显的性别区分,男
女生
都
有
做
产品
经理
的。但是从
女生
的生理和心理特点分析,
女生
做
产品
经理
有
一些独特的
优势
...
赞
踩
article
Unity
种常见的更新
函数
_
unity
update
...
在
Unity
中,有几个常用的更新
函数
,包括Update()等。这些
函数
在游戏运行时会被自动调用,但它们的调用时机和使用场...
赞
踩
article
pytorch
预
训练
模型
集合(网络定义与预
训练
模型
下载
)_
senet
网络
训练
好的
模型
下载
...
参考文章:Pytorch 预
训练
模型
下载
和加载github国内加速克隆及
下载
fastgit.orghttps://doc...
赞
踩
article
考研
失败
,
论文
没
写
,工作毫无头绪:2020这届
毕业生
有多惨?!_3月份毕业
论文
没
写
...
作者 | 怀左来源 | 怀左同学(ID: hztongxue)昨天逛微博时,我发现了这样一个热搜:“这届
毕业生
有多惨。”...
赞
踩
article
Redis
学习
笔记①基础篇
_
Redis
快速
入门
_
rdm
-
2021.9
...
在 Linux(CentOS7)中下载安装
Redis
和
Redis
的图形化界面;
Redis
的数据结构和常用命令;...
赞
踩
article
【深度学习】
YOLO
-
World
: Real-Time Open-Vocabulary
Object
...
YOLO
-
World
是一种实时开放词汇
目标
检测
系统,它通过视觉-语言建模和大规模数据集上的预训练,增强了
YOLO
(You...
赞
踩
article
2021-07-
30
_
uniapp
评论
回复
功能...
SpringBoot +
uniapp
实现App
评论
回复
功能萌新毕设的一个功能 大佬勿喷效果展示:一、 数据库表二、 ...
赞
踩
article
辐射
传输
基础理论
详解与LST
反演
方法_
通量
发射率
...
辐射
传输
基础理论
和地表温度_
通量
发射率
通量
发射率
地表温度LST...
赞
踩
article
分享几个
免费
好用
的
大学
搜题
平台
_
搜题
网
免费
...
最近线上考马原,题库搜不到
的
题目用以下公众号几乎都搜到啦。我主要是用来搜一些文科类考试和知识竞赛啥
的
,理科专业课类也有一...
赞
踩
article
(三)
ubuntu20.04
搭建
gitlab
服务
器_
ubuntu20.04
搭建
gitlab
服务
...
1、安装依赖sudo apt install ca-certificates curl openssh-server p...
赞
踩
article
Redis
集群
模式
(主从
模式
、
哨兵
模式
和分片
模式
)_
redis
哨兵
模式
和分片
模式
...
如果
哨兵
监测到Master主数据库宕机时会自动将Slave从数据库切换成Master主数据库,然后通过发布与订阅
模式
通知...
赞
踩
article
架构设计
内容分享(八十九)
:
从
程序员
到
架构师
_
程序员
工程师
架构师
...
我们来讲一个故事,一位旅行者路过一个烈日下的工地,所有人都在那儿汗流浃背地搬砖。旅行者问第一个人在干什么,那人头也没抬地...
赞
踩
article
[
数据
集][
目标
检测
]
数据
集
VOC
格式岸边垂钓钓鱼
fishing
目标
检测
数据
集-4330张...
数据
集格式:Pascal
VOC
格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的x...
赞
踩
article
带你了解
Android
约束
布局
ConstraintLayout
_
constraintlayout
宽...
目录1
ConstraintLayout
简介2 引入
ConstraintLayout
3 相对位置4 尺寸约束5
宽高比
6...
赞
踩
article
各大高校的
ACM
在线
测评系统
_
北京
acm
在线
...
我们学各种编程语言的同学一定要来这些地方做些题看下自己的水平山东理工大学http://sdut.
acm
.edu.cn南阳...
赞
踩
article
在
linux
上
使用
yum
仓库安装
MySQL
...
文章目录在
linux
上
使用
yum
仓库安装
MySQL
开始之前新安装
MySQL
的步骤1、添加
MySQL
的
yum
仓库2、选择...
赞
踩
相关标签
内部类
匿名内部类
静态内部类
成员内部类
Java
java
链表
数据结构
vue.js
javascript
前端
产品运营
面试
职场和发展
程序人生
unity
游戏引擎
pytorch
预训练模型
github加速
考研失败
毕业论文
人生规划
生活感悟
毕业生