自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Android窗口显示流程浅析(三)

上回说到,ViewRootImpl.setView与WMS和SurfaceFlinger建立完链接后,接着会执行SurfaceControl和Surface的申请,因为没有Surface,APP端就无法进行view的绘制。好的,我们看下requestLayout()里面发生了什么。本篇代码基于原生Android Q一.显示过程概览老规矩,先上图:二.核心代码流程1.checkThreadvoid checkThread() { if (mThread != Th

2020-06-10 18:10:41 666

原创 Android窗口显示流程浅析(二)

上一篇我们看到了ViewRootImpl的setView函数,ViewRootImpl的setView函数,主要流程分为两步:1.向WMS请求添加窗口并建立SurfaceFlinger链接2.APP端请求获取Surface,WMS建立SurfaceControl等等。本篇代码基于原生Android Q一.显示过程概览老规矩,先上图:二. 核心代码流程1.ViewRootImpl.setViewpublic void setView(View view, WindowMa

2020-06-10 11:01:19 610

原创 Android窗口显示流程浅析(一)

本篇开始,我们来谈一谈Android窗口的显示过程,注意,我们不包含Activity的冷启动过程,侧重于Activity,Window关系的建立。窗口的显示包含了Activity,view,Window,WindowManager,WMS,SurfaceFlinger等几个主要角色,本篇我们首先看看从Activity到window发生了什么。本篇代码基于原生Android Q一.显示过程概览话不多说,先上一张图:二.核心流程代码图中的流程基本已经比较清晰的展示了从Activity

2020-06-09 19:34:52 986

原创 Google cameraview开源框架的bug分析

一.问题背景前段时间排查某个APP无法拍照问题的时候,发现了APP的log中有如下的异常堆栈:12-25 11:40:41.562 10170 27566 27566 W System.err: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.So...

2020-01-22 16:36:34 2040

原创 Notification和NotificationManagerService原理解析

本篇代码基于原生Android P一.通知的基本使用通知栏消息是应用开发中十分常见和重要的一项功能。在Android O之后,增加了NotificationChannel的新特性,相同channel的通知拥有同样的特性,例如优先级,声音,振动,LED灯等等。这个特性使得相同属性的通知能够集中被管理,同时用户自己可以在应用的通知管理中手动修改channel的某项特性,这样给了用户一定的自主选...

2020-01-22 15:04:07 2343

原创 BroadcastReceiver详细分析之串行广播的调度和超时机制

上一篇文章我们主要梳理了广播的动态注册,发送,接收,主要的数据结构以及需要大家严重注意的几点内容,相信大家已经熟悉了。没看过的朋友传送门:BroadcastReceiver详细分析之主要流程相信聪明的朋友已经发现,上篇基本没怎么介绍串行广播和静态注册器,基本介绍的是普通广播的动态注册器的流程。因此,本篇单独讲解串行广播以及静态注册器的相关调度以及超时机制,毕竟这块知识点还是很多的,值得单开一篇...

2020-01-21 18:07:41 1515

原创 BroadcastReceiver详细分析之主要流程

本篇代码基于原生Android Q一.广播的基本使用BroadcastReceiver是Android的四大组件之一,其重要性不言而喻。广播可以用来进程内主线程和子线程进行通信,也可以用于进程间通信。下面是广播的基本使用方法://定义广播BroadcastReceiver receiver=new BroadcastReceiver() { @Override pu...

2020-01-21 16:09:38 557

原创 从A*算法看AI寻路问题

一.寻路问题寻路问题一直以来都是十分经典和有趣的问题,在我们生活中以及人工智能方面有着及其重要的研究价值。简而言之,寻路问题就是在给定起点和终点的情况下,找出一条可到达的最短路径,一路上可能有墙,坑,湖等不可经过的地段。表现在数据结构里面就是一张图,如下所示。我们可以对模型进行一下简化,便于我们分析问题。我们将寻路问题简化成一张方格表,类似于棋盘一样:图中,空五...

2019-05-23 17:07:44 856

原创 Android高亮引导页的简单实现

       前段时间公司APP有需求做一个内部的高亮引导页,我之所以说内部,因为外部也有引导页(这不是废话嘛,-_-||)。具体的样式想必大家都很清楚,就是那种在某个页面上进行操作指引的那种效果。本文着重说了内部引导页,是为了区别于外部引导页,外部引导页就是那种启动app时进行左右滑动引导的页面。虽然我知道网上这种框架肯定一大堆,但是再好的框架也比不了自己的思考以及实现。别人的永远是别人的东西,...

2018-09-13 13:41:25 1950

原创 Android仿朋友圈照片定点放大和滑动查看(未完待续)

    最近公司的项目中有一个图片加载和查看功能实现,具体是说通过列表项加载小图片,点击放大图片并且可以左右翻页,放缩等等,类似于微信朋友圈的照片墙功能。拿到这个需求后我想了想,图片列表首选当然是RecyclerView啦,线性布局,网格布局,瀑布流布局应有尽有,针对这个需求当然是网格布局咯。网络加载图片库那就多啦,从最初的Universal ImageLoader,到如今的Picasso,Fre...

2018-05-02 14:43:34 3256

原创 Jmeter压力测试简单教程(包括服务器状态监控)

Jmeter压力测试,包括登录前和登录后的页面,以及实时显示服务器状态曲线图。

2017-09-18 20:26:08 120986 77

原创 linux服务器状态监控软件-psdash安装教程

centOS安装psdash并进行访问加密

2017-07-27 16:56:01 3094 1

原创 Activity的生命周期函数、onActivityResult、intent和启动模式的调用关系

将activity的启动模式和intent传值问题进行了总结和思考

2017-07-25 11:14:00 7353 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除