5 没有鱼了

尚未进行身份认证

https://developer.android.google.cn/ https://www.androiddevtools.cn/

等级
TA的排名 2w+

OpenCV For Android 从零开始搭建开发环境 实现图像处理

最近一个项目有很多需求涉及到了图片处理相关的技术,比如图像边缘检测及区域裁剪,灰度及黑白增强效果,滤镜,人脸美化等,这些功能想纯靠SDK提供的api实现太难了,而且效率也不行,所以就想通过OpenCV来实现,鉴于之前没什么接入经验,所以想通过几篇博客记录其实现过程

2020-03-09 22:14:42

带你从源码一步步分析Android View面试中的事件分发流程

在Android中,事件分发机制是一块很重要的知识点,掌握这个机制能帮你在平时的开发中解决掉很多的View事件冲突问题,这个问题也是面试中问的比较多的一个问题了,今天就来一探究竟

2019-12-24 21:14:11

Android网络请求还在用Retrofit吗,来试试使用Apollo Graphql 吧

GraphQL 是 Facebook 于 2012 年在内部开发的数据查询语言,在 2015 年开源,旨在提供 RESTful 架构体系的替代方案。Graphql是一种用于 API 的查询语言,相比于REST API,查询多个数据就需要多个URL不同,它可以做到用一个请求能准确的获取你所需要的所有数据,不多不少。

2019-11-06 14:56:48

Android wifi列表扫描 密码连接 多个wifi切换登录 广播状态等都在这里

app里有个需求就是在应用内部开发一个wifi设置的功能,避免用户跳到手机wifi设置界面操作,之前没开发过这样的需求,只是简单的判断网络状态,不过心想应该不难,都是挺成熟的东西,其实做了后才知道还是有些坑的,今天来讲讲如何实现这个需求

2019-09-28 16:19:36

Android代码安装卸载apk 处理6.0权限/7.0Uri/8.0安装未知来源应用适配问题

在自己的APP里面通过代码手动安装第三方APP或者进行版本更新的时候,会碰到多个版本之间的差异带来的一些适配问题,比如6.0版本开始的运行时权限,7.0开始的文件共享机制,8.0修改后的安装未知来源应用权限等问题,今天通过这篇文章记录下适配过程

2019-09-26 22:14:22

android sutdio 统计app工程方法数插件 避免超过65536

做Android的肯定都知道android app有65535方法数的限制,至于原因也很简单,Android系统中,一个Dex文件中存储方法id用的是short类型,而short取值范围是-32768 到 32767,两者绝对值之和就是65535,所以导致一个dex中方法数不能超过65535;这个方法数不是说只是你自己写的方法,还包含android library,第三方library等

2019-09-08 15:50:09

Android源码解析-掌握AsyncTask工作原理 串行执行原因和内存泄漏的处理

它本质上是一个封装了线程池和Handler的异步框架;它内部使用一个线程池,串行执行每一个线程,线程生命周期不用开发者管理,用来执行异步任务,通过Handler来进行回调更新UI,这一套业务也可以使用Thread来做,但是使用Thread有些麻烦,每次使用都要自己new一个线程,要自己管理其生命周期,而且android还不允许在非主线程的线程更新UI,这样的话thread运行得到的结果如果需要更新UI可能还需要发一个handler通知主线程更新界面,代码写起来比较凌乱不如asynctask一目了然好维护。

2019-08-25 20:10:59

使用反射+注解封装一个基于Sqlite极简的android数据库框架

目前市面上已经有比较好用的数据库框架,比如GreenDao和OrmLite,而且功能也很齐全,那为什么还要多费功夫重复造轮子呢?原因无他,就为了装个B,哈哈,开个玩笑;每个框架经过了这么多版本的迭代,可以说设计的已经很周到了,考虑到了开发者能考虑到的问题,但是这也带来了一个问题,就是每个开发者使用这些框架的需求是不同的,有的需要这些功能,有的需要那些功能,这样你就没有必要把整个框架都导入到你的项目中来

2019-08-18 15:12:48

Android源码解析之带你看system server进程启动流程及系统服务启动

System Server进程和Zygote进程可以说是Android世界中的两大最重要的进程,离开其中之一基本上系统就玩完了(这里还有一个Media Server进程,是由init进程fork而来,负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务);System Server负责启动和管理整个framework,基本上在Framework中的大多数服务都是在system server进程中以一个线程的方式存在的

2019-08-11 20:55:01

干货分享:实用/高效/有逼格的Android Studio 常用配置/插件推荐

最近一些刚踏上Android开发这条路的童鞋问了一些Android Studio使用相关的问题,比如安装后打开不了,老是在build中;Gradle下载不了;HTTP代理怎么设置;SDK怎么手动下载;如何配置Gradle和Gradle插件;我自己使用Android Studio运行项目好好的,但是一旦导入别人的项目,Android Studio就一直在Build;方法类注释模板怎么设置,代码风格主题怎么换等等问题,这里就基于自己平时开发习惯整理下解决办法,以及分享一些好用的配置及提高android stud

2019-08-03 23:26:45

使用TraceView+实际案列实战性能分析 找出android app UI卡顿原因

ui卡顿应该是程序猿最不想见到的问题了,或者说现象吧,因为这让用户很直接的感受到极差的使用体验,此时用户的内心OS:这什么垃圾APP啊,做的这么卡;心情好点的可能连带着手机一起怼,这什么垃圾手机啊,性能这么差;所以在平常开发的时候一定要注意这方面的问题,多做测试,同时多拿一些机型测试,毕竟Android碎片化太严重了,随便一个小厂家都能做个手机出来卖。

2019-07-30 20:09:33

仿写ButterKnife框架核心功能 掌握编译时注解+注解处理器APT生成Java代码的技术

要定义编译时注解只需在定义注解时使用@Retention(RetentionPolicy.CLASS)修饰即可,编译时注解结合注解处理器(APT)在编译期完成操作,对性能影响很小;像@Nullable@NonNull这类的注解就是编译时注解;一些开源框架如BufferKnife, ARout、Dagger、Retrofit等都有使用编译时注解

2019-07-26 08:57:05

再也不怕面试官问我类加载器了 超详细解析Android/Java之ClassLoader 双亲委派模型及热部署实践

虚拟机设计团队把类加载过程中的<font color=Crimson>通过一个类的全限定名来获取描述此类的二进制字节流</font>这个动作放到JVM外部去实现,以便让应用程序自己决定如何去获取所需的类,实现这个动作的代码模块就是类加载器;简单点说类加载器就是用来加载Class文件的,它负责将Class的字节码数据转换成JVM运行时数据区(内存)的Class对象

2019-07-24 20:49:33

Android App如何借助OKHttp使用WebSocket实现与服务器实时双向通信【十二】

WebSocket作为一种解决web应用双向通信的协议由HTML5规范引出,是一种建立在TCP协议基础上的全双工通信的协议。它是一个应用层协议,它出现是为了解决HTTP的痛点,希望在服务器与浏览器之间建立一条不受限制的双向通信的通道

2019-07-23 21:42:07

Android自定义View如此简单 实现点击动画+进度刷新的提交/下载按钮(填坑面试题)

当我们看到一个复杂的动画效果时,一定要学会拆分实现步骤,因为再复杂的实现,也是由一个一个步骤组成的,我们只需要先将每个小步骤实现出来,再将其组合在一起就行了,这种思路很重要;既然可以应用于实际业务中,正好APP页面也有这方面的需求,所以就想动手绘制出来,于是就有了今天这篇文章,这种动画效果其实还是比较简单的,但是今天重点不在于此,主要是想借这篇文章重点叙述下自定义View的流程,也就是如何从零开始自定义一个View,以及涉及到的一些概念和冷门知识点,当然也是面试中经常会被问到的

2019-07-21 18:14:48

OKHttp3-- 请求服务器拦截器CallServerInterceptor源码分析 【十一】

这篇文章将对OKHttp最后一个拦截器进行解析,总算快要结束了;上一篇文章讲到连接拦截器,即客户端已经与服务端进行了连接,那接下来的操作自然就是发送接收数据了,看看官网的注释> 这是拦截器链上的最后一个拦截器,向服务器发起网络访问那接下来就从源码看看它是如何实现发送请求数据,接收响应数据的

2019-07-14 16:41:07

通过ConnectInterceptor源码掌握OKHttp3网络连接原理 呕心沥血第十弹【十】

ConnectInterceptor前言连接拦截器Http协议发展OKHttp创新前言没想到离上篇OKHttp3源码分析文章已经过去了3个月,中间忙着写其它知识点了,这次准备把OKHttp这个系列结束掉;今天这篇文章来谈谈拦截器链中的第四个拦截器,即连接拦截器,这是OKHttp中非常重要的一个拦截器,值得重视连接拦截器这个拦截器类的源码很简单,只有数十行,如下 @Override ...

2019-07-05 15:58:13

Android仿IOS封装通用的弹出框Dialog和底部弹出列表选择框 仿美团顶部条件筛选框 附自定义ViewGroup

鉴于Android提供的默认弹出框很一般,IOS的弹出框样式还不错,同时使用弹出框dialog的需求还是蛮高的,于是就想仿照ios弹出框封装一个通用的dialog,解决操作询问,提示信息,列表选择等需求;同时在搜索数据的时候,需要选择条件,也是使用弹出框解决,类似于美团的顶部筛选框,今天就来封装下

2019-06-29 15:14:58

使用AIDL+动态代理+运行时注解+反射 反手撸一套Android跨进程通信框架

由于应用中存在多个进程,比如一个主进程,一个消息推送进程及一个应用守护进程,这使得进程间通信的开发提上日程,而为了提高开发效率,需要提炼出一套跨进程通信的基础框架,以本篇博客记录其编写过程

2019-06-24 07:51:41

解密Android7.0 8.0进程保活与拉活的实现方式 如何才能让APP常驻内存 躲避系统的追杀

近期被一些朋友问到关于进程保活这块的知识点,想必是很多开发者研究的重点,虽然我不支持做成这类【流氓软件】,因为大家都这么干的话,Android系统的内存永远不够用,电量消耗的贼快,流畅度肯定就大大的降低了;但是程序猿可能也架不住产品的需求,哪一个产品经理不希望自己的APP在用户的手机上随叫随到;其实说实话一个APP很难做到真正的不死,除非你的应用被手机厂商拉到了白名单中;在Android L之前还可以通过Native层做到应用不死,不过这个漏洞被Google给修复了;那么作为一个不在白名单中的应用怎么才能

2019-06-20 12:09:47

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 回归勋章
    回归勋章
    授予重新回归CSDN的真爱粉用户,我们不会让你失望哒!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 黄花
    黄花
    子板块内专家分月排名榜第二