- Jetpack LiveData源码分析
xiangxiongfly915
#AndroidJetpack系列JetpackLiveData源码分析
文章目录JetpackLiveData源码分析前提源码分析注册订阅流程LiveData#observe()LifecycleRegistry#addObserver()ObserverWithState#dispatchEvent()LiveData#removeObserver()LiveData$LifecycleBoundObserver类LifecycleBoundObserver#sho
- iOS输入框过滤表情,处理自带键盘无法输入
山有木枝壮
本片分两部分1、使用正则表达式过滤表情2、处理苹果自带键盘无法输入汉字问题先记录下,后面完善:overridefuncviewDidAppear(_animated:Bool){super.viewDidAppear(animated)NotificationCenter.default.addObserver(self,selector:#selector(self.textFieldEditC
- 键盘上方的bar
古月思吉
*如何让键盘上方的EditBar随着键盘移动?(1)添加监听、监听事件://MARK:-编辑bar相关extensionPublishDynamicController{//添加键盘的监听funcaddKeyboardObserver(){//添加键盘监听NotificationCenter.default.addObserver(self,selector:#selector(self.keyb
- iOS KVO机制
水煮杰尼龟
来自官方文档的使用步骤step调用addObserver:forKeyPath:options:context:方法来注册观察者在观察者内实现observeValueForKeyPath:ofObject:change:context:可以接收到属性发生变化的通知当观察者不再需要接收消息时,需要调用removeObserver:forKeyPath:移除监听,至少应在观察者释放之前调用。我们先
- 记一次优雅的回调方式
张鹿鹿
Android进阶java设计模式
最近在用Lifecycle时学到了一种优雅的回调写法,特此记录一下。普通回调我们在写业务逻辑时难免会遇到需要设置回调的场景,也就是观察者模式,例如下面这个观察者:publicinterfaceObserver{voidcall();}使用时直接添加即可。publicstaticvoidmain(String[]args){ObserverManager.addObserver(newObserve
- iOS 使用touchBegan隐藏键盘后,UIButton和UITableView上的点击事件不响应
wangxiao001
隐藏键盘操作,是开发中常见操作。一般,我们可以通过下面的方式,来隐藏键盘。隐藏键盘的处理逻辑如下:-(void)viewDidLoad{-(void)touchesBegan{[superviewDidLoad];。。。。。。。。。。UITapGestureRecognizer*tap=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:
- swift NotificationCenter 通知的简单用法
MrLSX
通知的作用是一对多,跨界面实现调用函数,依据的是KVO//1.注册通知NotificationCenter.default.addObserver(self,selector:#selector(ceshi),name:NSNotification.Name(rawValue:"aaa"),object:nil)@objcfuncceshi(){collectionView.backgroundC
- 事件响应与手势识别
lsh_01
本文参考:https://blog.csdn.net/woaihuangrong/article/details/52972913以下是简要摘抄内容在不考虑内部实现机制的情况下,我们使用三种方式来处理IOS手势:GestureRecongnizers—UIGestureRecognizer及其子类touches响应—touchesBegan、touchesEnd..等Target-Action机制
- iOS开发之:监听音量键
VKOOY
iOSiosios开发监听音量键
1、添加通知[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(volumeChanged:)name:@"AVSystemController_SystemVolumeDidChangeNotification"object:nil];[[UIApplicationsharedApplication]beg
- (IOS)AVPlayer视频播放完成的通知监听
rightmost
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(videoPlayEnd)name:AVPlayerItemDidPlayToEndTimeNotificationobject:nil];
- 479,KVO与NSNotificatioCenter有什么区别?(相同点:两者都是用于监听,且实现原理都是观察者模式,都是一对多(KVO的一对多就是通过addObserver,添加不同的对象)...
枫叶1234
相同点:两者都是用于监听,且实现原理都是观察者模式;都是一对多.不同点:KVO只能用于监听对象属性的变化,并且属性名都是通过NSString来查找,因为都是字符串,手敲过程中容易出错,编译时不会报错;NSNotification的发送监听(post)的操作是我们通过代码控制的,KVO是系统控制的;KVO可以记录新旧值的变化.KVO注意事项基本用法:KVO的使用主要分为3步:注册观察者addObse
- 【用法总结】LiveData组件要点
TechMix
开发经验总结Android源码分析javaandroidandroidjetpack
1、如何实现和生命周期的关联?调用observe()方法时,第一个参数传入LifecycleOwner对象,而LifecycleOwner能通过getLifecycle()方法获取到lifecycle对象,然后执行lifecycle.addObserver()添加LiveData中数据(mData)变化的观察者对象。observe的实现逻辑:@MainThreadpublicvoidobserve
- Flutter 监听前台和后台切换的状态
Leonardo_Fibonacci
Flutter相关前端
一前后台的切换状态监听混入WidgetsBindingObserver这个类,这里提供提供了程序状态的一些监听二添加监听和销毁监听@overridevoidinitState(){super.initState();//2.页面初始化的时候,添加一个状态的监听者WidgetsBinding.instance.addObserver(this);}@overridevoiddispose(){//T
- UIAlertController添加输入框并监听输入内容控制按钮是否可点击
跃文
-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{__weakUIAlertController*alertC=[UIAlertControlleralertControllerWithTitle:@"请输入密码"message:@"输入提示"preferredStyle:UIAlertControllerStyleAlert
- iOS触摸事件、手势识别原理
西门吹雪V
触摸发生时,UIWindow会有一个队列来存放所有的触摸事件,然后再把这些事件发送给对应的hit-testview,hit-testview会通过touch的四个函数来接收这些事件。四个函数分别为:(began,move,end,cancel)//touchesmethod-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{NS
- iOS 监听APP被强制退出的方法,双击Home键杀死应用
隔墙送来秋千影
起初设置的方法为这个-(void)applicationWillTerminate:(UIApplication*)application{//业务逻辑}可是通过测试发现,APP退出的时候并不走这个方法只要添加观察者才会执行这个方法[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(applicationWi
- iOS App监听网络状态改变
super_2e20
在App中经常会监听网络的变化,下面是网上经常用到的两种方式1.Reachability//监听网络状态改变的通知[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(networkStateChange)name:kReachabilityChangedNotificationobject:nil];//创建
- 关于KVO的那些你不知道的细节
best_su
首先:demo在这里。里面有你想要的一切。KVODemokvo的使用方法:这个简单,你懂就不用看使用方法了。第一步:创建对象:拿到对象的属性,如果你想监听哪一个属性,然后卸载keyPath里面-(void)addObserver:(NSObject*)observerforKeyPath:(NSString*)keyPathoptions:(NSKeyValueObservingOptions)o
- 监听键盘的弹出和收回通知
ToBeABetter_man
-(void)viewDidLoad{[superviewDidLoad];//增加监听,当键盘出现或改变时触发方法[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];//增加监听
- Lifecyle的原理
wuxin_9102
androidjetpack
1、Lifecycle是典型的观察者模式,被观察者的继承关系如上图所示。2、LifeCycleRegistry是Lifecycle的子类。3、观察者通过LifeCycle对象的addObserver注册监听生命周期的变化,通过removeObserver移除监听生命周期的变化。4、Activity或Fragment的生命周期发生变化时,通过LifecycleRegistry的handleLifec
- OC基础-(四)KVC、KVO
码小六
KVOQ:什么是KVO?KVO(key-valueobserving),从名称上就可以知道这是一种键值观察的机制KVO是OC对观察者模式的又一实现Apple使用isa混写技术(isa-swizzling)来实现KVO当我们注册一个对象的观察者的时候,也就是调用了系统的addObserver:forKeyPath:options:context:方法,来观察一个对象的某个属性,系统会在运行时创建一个
- iOS判断当前点击的位置是否在某个视图上的几种方法
陈大帅
转自ericshen880412iOS判断当前点击的位置是否在某个视图上记录几种判断触摸点是否在某个view上面的方法第一种方式:isDescendantOfView:通过touch.view调用isDescendantOfView:方法,返回YES,则触摸点在我们需要判断的视图上;反之则不在-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent
- OC底层原理二十四:自定义KVO
markhetao
OC底层原理学习大纲上一节,我们介绍了KVO原理,本节我们通过自定义KVO(简化版),来更透彻的理解KVO的原理:目的:模拟系统实现KVO原理自动移除观察者实现响应式+函数式回顾上节最后的总结,我先细化为重写的核心流程:addObserver时:1.1验证setter方法是否存在1.2注册KVO派生类1.3派生类添加setter、class、dealloc方法1.4isa指向派生类1.5保存信息触
- OC - 点击空白处隐藏键盘
Timidvb
IQKeyboardManager是肯定要加的了,其次就是点击空白处隐藏键盘。在view中重写touchesBegan方法-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{[userNameTextFieldresignFirstResponder];[passwordTextFieldresignFirstResponder
- OC-KVO
浪的出名
KVO是什么kvo:Key-ValueObserving(键值观察),键值观察是一种机制,它允许将其他对象的指定属性的更改通知给对象。KVO的使用注册观察者:addObserver:forKeyPath:options:context:[self.personaddObserver:selfforKeyPath:@"name"options:NSKeyValueObservingOptionNew
- ios ~ 手指在view或window上的位置 x、y
阳光下的叶子呵
获取手指在某一个UIView上的具体位置:point.x、point.y所求的自定义view:self.lineLayerRangeView-(void)touchesBegan:(NSSet*)toucheswithEvent:(nullableUIEvent*)event{UITouch*touch=touches.anyObject;CGPointpoint=[touchlocationIn
- flutter widget 的生命周期监测
周无恋
flutterViewWillAppear当需要和ios开发使用页面的生命周期时,flutter并没有viewwillappear等方法或者相似的状态管理//添加监测WidgetsBinding.instance.addObserver(this);@overridevoiddidChangeAppLifecycleState(AppLifecycleStatestate){super.didCh
- KVO、KVC
QYCD
KVO(KeyValueObserving)键值观察,苹果提供的一套事件通知机制KVO用于监听对象某个属性的改变,当被观察的属性的值发生变化时,会自动调用相应的方法。使用:注册监听通过[addObserver:forKeyPath:options:context:]方法注册KVO,这样可以接收到keyPath属性的变化事件监听方法通过方法[observeValueForKeyPath:ofObje
- FISCOBCOS 控制台全部命令
发呆...
FISCOBCOS基础区块链FISCOBCOSubuntu
本文将官方文档控制台命令的英文命令整理为中文命令,供各位同好查阅help([-h,-help,--h,--H,--help,-H,h]):提供帮助信息。addObserver:添加一个观察者节点到系统中。addSealer:添加一个共识节点到系统中。call:通过指定的函数和参数调用合约。callByCNS:通过CNS(合约名称服务)按照函数和参数调用合约。create:使用SQL创建表。dele
- 设计模式:观察者模式
zxy861114
设计模式java设计模式观察者模式
blog宗旨:用图说话辅助文字说明:1.首先调用Subject.addObserver()将Observer注册到Subject中。2.ConcreteSubject.notifyObservers()将遍历所有已注册的observer,调用observer.notify()方法。好处:Subject与Observer之间是一种松耦合关系。
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http