首页
学习
活动
专区
工具
TVP
发布

移动开发的那些事儿

专栏作者
22
文章
31251
阅读量
15
订阅数
Homebrew安装问题解决
意思就是说连接raw.githubusercontent.com这个域名超时,这个的原因就是因为Mac系统升级之后不允许再执行远程的脚本来安装,所以只需要把远程脚本下载到本地后执行
大大大大大先生
2020-04-30
1.6K0
内存泄露的一些坑
如上,在Activity内部如果声明一个这样的Handler,那么myHandler就默认持有Activity引用,假设Activity退出了,但是可能这时候才有myHandler的任务post,那么Activity是无法被回收的,可以采用以下方式解决:
大大大大大先生
2018-09-04
1.7K0
IM二分法智能心跳策略
IM心跳策略 心跳的字段定义 minHeart 最小心跳,本地默认120秒,服务器定120秒 maxHeart 最大心跳,本地默认580秒,服务器定580秒 startHeart 起步心跳,本地默认240秒,服务器定240秒 心跳信息字段 networkTag 当前网络类型,如CMCC-4G stabled 稳定心跳的标志位,true表示稳定心跳 stabledSuccessCount 稳定心跳连续成功次数,这里是在心跳稳定一段时间后,再尝试上调的时候用,例如stabledSuccessCount > 50
大大大大大先生
2018-09-04
1.2K0
IM TCP网络问题分析
应该下调心跳周期,但是旧版(1.0.1Realease-1.0.6Realease版本)存在
大大大大大先生
2018-09-04
1.3K0
Android ANR在线监控原理
如上是从ActivityManagerService提取出来关于Watchdog监控ActivityManagerService这个对象锁的相关代码,而监控的实现如下,Watchdog是一个线程对象,start这个线程之后就会每次wait 30s后检查一次,如此不断的循环检查:
大大大大大先生
2018-09-04
2.7K0
TCP问题分析
TCP问题分析 网络的五层协议 物理层 数据链路层 网络层,IP协议,ICMP协议(ping) 传输层,传输层有两个协议,面向连接的TCP和无连接的UDP,TCP是点对点的可靠连接,保证数据顺序必达,UDP是无连接的,不保证数据顺序必达,UDP的传输效率要比TCP高,但是可能会丢包,而且一个UDP分段最多只能发送65535个字节,TCP则是数据流的形式进行数据传输的,对于应用层来说,并没有限制一次性可发送的数据,只有在TCP协议这一层会对应用层传输下来的数据做分段重组,这个跟SYN的MMS(Max se
大大大大大先生
2018-09-04
1.2K0
Android界面绘制原理
从普遍的意义上来讲,以上这段代码就是设置WindowManager和DecorView的关系,继续看:
大大大大大先生
2018-09-04
1.5K0
Android开发之逻辑单元测试
以上createInetSocketAddress方法就是我在编写单元测试的时候单独抽离出来的方法,一方面我需要mock一个InetSocketAddress来满足测试需求,另一方面,单独抽离一个createInetSocketAddress方法从代码上看也是必要的,让方法职责更加单一,如果把createInetSocketAddress的实现直接耦合到connectImpl方法中,那么connectImpl的代码除了连接tcp的逻辑外还有创建InetSocketAddress的逻辑,这样就比较混乱,而且方法体也变长
大大大大大先生
2018-09-04
1.3K0
DHCP租约到期自动续租问题导致TCP连接异常
以上是发起请求后有正常收到Ack的情况,但是接下来设备发起了请求并没有收到Ack,所以导致设备一直不断的去发起DHCP请求,而且此时设备并没有网络切换广播,并且设备本地判断网络是正常可用的,原因是设备到路由器的网络是通的,只是路由器到远程服务器的链路是不通的:
大大大大大先生
2018-09-04
3.9K0
APP,Activity的启动速度优化
以上打印出了所谓的thisTime和totalTime,thisTime是指当前Activity的启动时间,正常情况下,如果从桌面启动一个Activity,那么thisTime==totalTime,但是通常app会有一个不加载布局文件的闪屏页面,然后再跳转到相应的Activity,这时候thisTime仅仅是代表最后一个Activity的启动时间,而totalTime还包括而totalTime是指APP进程启动时长,闪屏页面的启动时长以及闪屏页面的消失,新Activity的启动时长之和,所以关注APP的启动时间,我们通常关注的是totalTime
大大大大大先生
2018-09-04
1.4K0
startActivity的Hook之路
由上可知,最终是通过ActivityThread里面的mInstrumentation对象来执行execStartActivity,而ActivityThread是在Android APP启动执行Java main方法的时候创建的ActivityThread:
大大大大大先生
2018-09-04
8520
Android事件分发原理分析
在Android中,触碰控件的时候回产生一个ACTION_DOWN事件并逐层向下传递,首先ACTION_DOWN回先从Activity的dispatchTouchEvent方法开始向下传递:
大大大大大先生
2018-09-04
1.1K0
BlockCanary源码解析
如上代码中的loop()方法是Looper中的,我们的目的是监测主线程的卡顿问题,因为UI更新界面都是在主线程中进行的,所以在主线程中做耗时操作可能会造成界面卡顿,而主线程的Looper早已经在APP启动的时候Android framework里面创建了main looper,那么一个线程对应一个Looper,Looper当中有一个MessageQueue,专门用来接收Handler发送过来的msg,并且在looper()方法中循环去从MessageQueue中去取msg,然后执行,而且是顺序执行的,那么前面一个msg还没处理完,loop()就会等待它处理完了才会再去执行下一个msg,如果前面一个msg处理很慢,那就会造成卡顿了,在msg.target.dispatchMessage(msg)前有:
大大大大大先生
2018-09-04
8530
JVM的类加载机制
其中,加载,验证,准备,初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序开始,而类的解析不一定,类的解析可能在初始化阶段之后再开始,这是为了支持Java语言的动态绑定
大大大大大先生
2018-09-04
1.2K0
Android中使用Contentprovider导致进程被杀死
Contentprovider也是四大组件之一,支持跨进程调用,因此肯定会用到IPC的Binder机制来实现跨进程调用,在应用层就是AIDL
大大大大大先生
2018-09-04
2.4K0
JVM的垃圾收集器策略
程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。
大大大大大先生
2018-09-04
2730
Android Sqlite并发问题
如上异常堆栈中的错误信息error code 5: database is locked,经过查找发现code为5代表sqlite中的SQLITE_BUSY异常,详见:https://www.sqlite.org/rescode.html#busy,这里面说,SQLITE_BUSY(5)异常是一个数据库文件在被其他不同的数据库连接进行并发操作的时候写操作将补发继续,通常是多个进程的不同数据库连接对同一个数据库进行并发操作,例如进程A在进行耗时的数据库事务,而于此同时进程B也要进行一个数据库事务,这时候进程B就会直接返回SQLITE_BUSY的错误码,因为sqlite只能支持同一个时刻只能有一个写操作,所以解决这个问题的方法就是避免不同进程分别对同一个数据库各自开启一个database connection,并且对相同的数据库进行并发操作,如果有这种需求,那么应该全部都交给一个进程来对数据库进行操作,其他的进程想操作这个数据库就通过contentprovider的方式来实现数据共享,使用contentprovider的方式是最安全的,如果是通过shareUserId的方式来实现数据库共享也是不安全的,因为:
大大大大大先生
2018-09-04
1.4K0
从源码的角度分析ThreadPoolExecutor实现原理
下面继续分析线程池如何管理运行线程,其实就一句话,维护一个线程队列,然后对这个线程队列进行存取操作
大大大大大先生
2018-09-04
4170
自定义实现垂直滚动的TextView
通过控制y参数可实现文字不同的垂直距离,这里的x,y并不代表默认横向坐标为0,纵向坐标为0的坐标,具体详解我觉得这篇博客解释的比较清楚,我们主要关注的是参数y的控制,y其实就是text的baseline,这里还需要解释text的杰哥基准线:
大大大大大先生
2018-09-04
1.7K0
数据结构?从HashMap的源码分析开始!
首先,先看下inflateTable方法,这个是初始化HashMap里面的线性表的空间:
大大大大大先生
2018-09-04
3430
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档