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

码农帮派

专栏成员
66
文章
61667
阅读量
16
订阅数
Android实现摇一摇触发逻辑
下面的代码主要控制手机摇晃的程度,在摇晃到一定成的时候,才会触发摇一摇回调,重点在于如何保证摇一摇的触发既不能太灵敏,也不能太迟钝。
码农帮派
2021-04-22
2.5K0
Android Framework用到了哪些进程通信(IPC)的方式
半双工,单向的 (一个管道要么只能读,要么只能写,数据的读/写是单向的,要想实现既能读又能写,就需要使用两个管道来完成)
码农帮派
2021-02-25
6830
Binder跨进程通信的流程
上图是一次binder调用的通信流程,Client是应用进程,Server是系统服务,应用进程通过binder调用请求系统服务,Client向binder驱动发送BC_Transaction指令,binder在收到该指令指令之后回向Client返回BR_Transaction_Complete指令,同时binder驱动会向系统服务发送BR_Transaction指令,并等待系统服务的处理,系统服务处理完成之后会向binder发送BC_Reply的回持,binder驱动在收到系统服务的回执之后,也会向系统服务发送BR_Transation_Complete的回执,同时向应用进程发送BR_Reply,将处理结果发送给应用进程。
码农帮派
2021-02-25
5510
Android中的热修复
在运行时替换掉底层有Bug的方法的地址,将他们的指针指向修复之后的方法的内存地址,从而实现热修复的功能。
码农帮派
2021-02-25
1.9K1
Android类加载之双亲委派机制
我们定义一个CustomClassLoader加载器,去加载String.class文件的流程如下:
码农帮派
2021-02-25
1.6K0
说说Activity的启动流程
Activity是一个组件,组件的启动是要通过AMS的,和Application的启动一样,Activity的启动也会涉及到AMS、Zygote以及应用进程之间的socket通信以及Binder调用。
码农帮派
2021-02-25
5520
Handler面试八问
线程启动之后,进入main()方法,在main()方法中进行线程的一些初始化,初始化工作完成之后,会调用Looper.loop()进行消息监听,而loop()方法是一个死循环,从而保证线程不会立即退出:
码农帮派
2021-01-28
1.1K0
说说ThreadLocal的原理
我们在线程中使用Handler之前,需要调用Looper的prepare方法进行Looper初始化,否则会抛出异常,说Looper不存在,其实我们在调用prepare方法的时候,就是为当前的线程创建一个Looper对象,并存储到这个线程的ThreadLocal变量中,在后续创建Handler的时候,会从当前线程的ThreadLocal变量中读取这个Looper,进行消息传递。一个线程中只有一个sThreadLocal变量,因此也只有一个Looper对象(对应着只有一个MessageQuque消息队列),所以线程中声明多个Handler对象处理消息的时候,都是使用同一个Looper和同一个MessageQueue消息队列。
码农帮派
2021-01-28
4330
笔记13 - Android中的内存泄漏如何优化
Activity承载了应用和用户交互的任务,在Activity中有大量的资源引用和上下文Context这样占用内存较大的资源对象,因为Activity一旦因为外部变量的持有,就会造成比较严重的内存泄漏。造成Activity内存泄漏的场景有以下:
码农帮派
2021-01-28
1.3K0
Android中怎么跨进程传输大图片
1. 将图片保存在固定的位置,将存储位置信息跨进程发送给其他进程,其他的进程读取图片文件
码农帮派
2021-01-28
2.7K0
笔记11 - Android touch事件分发时机
ViewGroup是一组View的组合,在其内部会包含多个子View,当用户点击屏幕的时候,点击的位置可能在ViewGroup上,也可能在其内部View控件上。
码农帮派
2021-01-14
8150
说说idleHandler的原理
首先看一下IdleHandler接口的定义,从上面的定义可以看到,IdleHandler的触发时机是当前线程的消息队列中没有消息,或消息队列中的消息尚未到处理的时间,这时就会触发IdleHandler的queueIdle方法。
码农帮派
2021-01-14
1.2K0
笔记12 - 对于网络编程,做过的优化?
首先是防劫持,我们可以使用HttpDns,它与传统的DNS解析相比,HttpDns会绕开运营商的DNS服务器,直接与DNS服务器的80端口进行交互,可以有效的防止域名劫持。
码农帮派
2021-01-14
8250
Handler中的消息屏障
Handler中的消息队列如上图所示,是一个单链表,各个消息按照执行时间先后排列,消息类型分为三种:普通消息(normal)、屏障消息(barrier)、异步消息(async)。
码农帮派
2021-01-14
1.3K0
LeetCode中级算法-数学(2)
使用二分查找,需要注意的是因为只保留整数部分,我们找到平方根的平方结果只可能小于target,基于以上的分析,在二分查找的时候,在缩小范围的时候,要是结果小于target都进行缓存,这样保证有结果
码农帮派
2021-01-12
2600
WebRTC NAT穿越原理
NAT虽然带来了不少的好处,但是也增加了端对端直接通信的难度,NAT使得端对端的通信方式在某些场景下只能通过中转服务器进行交互。
码农帮派
2021-01-12
8740
Android线程间消息传递机制
上图是消息循环的过程,当线程进入Looper.loop()循环之后,会从MessageQueue中阻塞的读取Message,要是MessageQueue中没有消息,会一直阻塞在queue.next的地方,直到从MessageQueue中读取到Message,然后将该Message分发给Message的target,这个target是一个Handler的实例。
码农帮派
2021-01-12
8170
笔记10 - DVM或ART是如何对JVM进行优化的
DVM大多数实现和传统的JVM相似,但是为了满足Android在手机端内存的限制,Dalvik对JVM做了一些独有的优化。
码农帮派
2021-01-12
7030
Handler的消息延时是怎么实现的
通常我们使用Handler的消息延时都是调用sendMessageDelayed函数实现的,其中delayMillis是需要延时的毫秒。
码农帮派
2021-01-12
2.2K0
LeetCode中级算法-数学(1)
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
码农帮派
2021-01-12
3070
点击加载更多
社区活动
AI代码助手快速上手训练营
鹅厂大牛带你玩转AI智能结对编程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档