Android知识点整理
文章平均质量分 74
安静的Sunny
人生就是不断重复挖坑,跳坑,填坑的过程!
展开
-
你真的了解taskAffinity属性么?
在2019年,有安全研究员向Google官方提交了一个利用taskAffinity的漏洞,后面被命名为StandHogg。最近在2020年5月份又公布了StandHogg 2.0漏洞。StandHogg 2.0 隐藏的更深,一般很难发现,甚至都不用设置taskAffinity就可以实现。目前官方已经发布了Android 10.0系统补丁包,有条件的可以对系统进行升级。有兴趣的同学可以看下这篇文章:https://www.xda-developers.com/strandhogg-2-0-android-vu原创 2020-08-23 23:21:20 · 5677 阅读 · 5 评论 -
Android Annotation注解、RxJava、开源网络库
以下知识点Demo源码已经上传到github:https://github.com/SunnyLy/ActivityLifeDemo一、RxJava响应式编程,流式控制。观察者消费者模式。分析的好的博文:https://www.jianshu.com/p/ceb48ed8719d目前已经更新到RxJava3.0:RxJava2.0 VS RxJava1.0:主要是RxJava采用背压策略,解决了RxJava1.0中因为被观察者(Observable)发送事件速度 与观察者(Observer).原创 2020-05-23 14:18:03 · 299 阅读 · 0 评论 -
【最新Android高级面试知识点--事件分发、Binder机制】
【最新Android高级面试知识点干货分享(六)】转载请注明出处!九、Android事件分发机制事件分发机制是个必考点,网上也有很多很好的文章,在复习的过程中,建议按照源码自己动手动画画,下图就是我自己整理的,有不对或不完整的地方,欢迎留言,我将确认后更改更新。注意:Android事件从ACTION_DOWN开始往下传,依次ACTION_MOVE---->ACTION_UP,如...原创 2020-05-18 10:04:53 · 581 阅读 · 0 评论 -
【最新Android高级面试知识点--绘图机制】
【最新Android高级面试知识点干货分享(五)】转载请注明出处!六、Android自定义View更深入一点的,应该了解一下WMS,以及View与Window、Activity之间是怎么关联,怎么添加上去的。针对View,还得了解它的测量模式与测量规范。延伸:从源码角度分析View的绘制流程(onAttach–onMeasure—onLayout—onDraw)针对Android...原创 2020-05-18 10:04:06 · 930 阅读 · 0 评论 -
【最新Android高级面试知识点--四大组件】
【最新Android高级面试知识点干货分享(四)】转载请注明出处!三、Service/IntentServiceService作为四大组件之一,也是面试官喜欢问的。一般包括:启动方式、生命周期、Binder机制、保活以及唤醒等。启动方式:startService/bindService生命周期: onCreate--onStartCommand--onDestroy ...原创 2020-05-18 10:03:18 · 239 阅读 · 0 评论 -
【最新Android高级面试知识点--Activity启动流程】
【最新Android高级面试知识点干货分享(三)】前面用了三篇来整理分享了我的java笔记。接下来从第四篇开始,我将正式开启我的Android面试笔记分享。《Android篇》一、Activity启动流程这是我自己绘制的时序图,从Launcher开始。可能会存在不准确或看不懂的地方;因此,也建议读者自己根据源码画一下图,加深理解记忆。二、Activity任务栈及启动模式...原创 2020-05-18 10:02:39 · 1093 阅读 · 0 评论 -
【最新Android高级面试知识点---JVM内存模型】
【最新Android高级面试知识点干货分享(二)】七、Java运行时数据区 与 JVM内存模型优秀博文推荐:https://www.cnblogs.com/czwbig/p/11127124.html$7.1、Java运行时数据区在JDK8以前,Java运行时数据区域具体分为以下五块:程序计数器(程序寄存器/PC寄存器Program Count Register):每个新开的线程都会有...原创 2020-05-18 10:01:27 · 824 阅读 · 0 评论 -
【最新Android高级面试之Java集合】
接上一篇四、Java集合(List、Set、Queue、Map)Java集合体系是一个树状,如果按照类似OSI网络模型来看的话,整个Java集合就是应用层,而底层的数组就是TCP/IP层。而它也是全网各面试题中出现概率最高的。对于集合,有几个核心知识点是需要了解的:底层数据结构、扩容机制、效率、线程案例等。整个Java集合大致分为两类:Collection接口与Map接口下图来源于...原创 2020-05-18 09:59:53 · 524 阅读 · 0 评论 -
OpenGLES Android篇零基础系列(五):GLSL着色器语言
本文转载至:http://www.tuicool.com/articles/qMfAfy一.概述GLSL ES是在GLSL(OpenGL着色器语言)的基础上,删除和简化了一部分功能后形成的,目标平台是消费电子产品和嵌入式设备,比如智能手机、游戏主机等等,ES版本主要降低了硬件功耗,减少了性能开销。二.基本语法规则大小写敏感语句末尾 必须 要有分号从main函数开始执行函数声明中 不能省略返回原创 2016-12-22 15:49:20 · 2620 阅读 · 0 评论 -
通信协议之:Http,Socket,UDP
最近在看《Java网络编程》,对于0基础的我来说,真是受益匪浅,从中学到了很多,使我对自己平时常用的网络操作等也有了进一步的了解。强烈建议同学们去看看这本书。一:Socket【基本用法】 都知道它被翻译为”套接字”,其使用方法如下:String host = "localhost";int port = 8080;try{Socket socket = new Socket(host,por原创 2016-12-28 19:56:55 · 667 阅读 · 0 评论 -
漫说Android 中SurfaceView蕴含的美
相信大家对SurfaceView并不陌生,也相信大家一定有用它来做过视频播放等功能。但我今天要跟大伙分享的并不是如何利用SurfaceView来做视频播放,而是想与大伙一起来谈谈SurfaceView所蕴含的美,一种只有程序员才能读懂的美。SurfaceView作为View家族的一员,它的美是内在的,而这种内在的美又受View家族的熏陶。即继承了View的精神,但又与时俱进,不乏创新精神,标新立异,原创 2016-11-12 15:16:02 · 814 阅读 · 1 评论 -
关于GLSurfaceView lockCanvas锁定画布的问题
注:由于最近一直在研究人脸识别,其中用到了GLSurfaceView,里面遇到了一个坑,一直没找到原因,现在终于找到了,权且做个备忘录。大家都应该知道,我们可以直接通过SurfaceView来锁定画布,在画布上面画自己想要的东西,完了,通过解锁画布,把内容渲染出来。可不知道为什么,在用GLSurfaceView是,调用lockCanvas()方法,死活不成功,报如下错误: 但是我如果自己写一个S原创 2016-10-17 10:26:02 · 3913 阅读 · 1 评论 -
Android控件之TextClock
前言以前写时间控件,都是自己用TextView,然后写个线程来获取当前时间,然后显示。 直到今天无意间看到ApiDemo里面的View,发现了TextClock,才知自己的无知。正文1、 TextClock简介关于时间的文本显示,Android提供了DigitalClock和TextClock。DigitalClock是Android第1版本发布,功能很简单,只显示时间;在Android4.2(对原创 2016-10-17 14:07:14 · 12286 阅读 · 0 评论 -
Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
本文转载至:http://www.cnblogs.com/Freedoms/p/5171201.html一、前言 目前正在准备从eclipse开发环境向AndroidStudio迁移,提前过去探探路,不出所料,原来gradle脚本果然报错,无法运行,想想索性把本地的gradle一起升级到最新版本,毕竟1.22有点太古老了。 仍然不废话,先上干货。二、准备工作1、首先,如果使用eclipse作转载 2016-10-14 11:06:32 · 471 阅读 · 0 评论 -
Android开发常见异常与错误系列(二)
接上篇文章:Android开发常见异常与错误系列(一)六、Too many open files异常运行在Linux系统上的Java程序可能会出现”Too many open files”的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。 程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access a原创 2016-04-08 18:14:05 · 876 阅读 · 0 评论 -
Android关于Jenkins+Gradle自动化构建时Gradle版本冲突的问题
前言 Jenkins自动化构建工具已经出来好久了,它为我们省去了不少的重复性工作,例如:构建,打包等。但是对于初学者,刚开始的配置可能会有点麻烦。这里我就不再赘述了,不懂的童鞋请自行去找度娘。正文 今天在构建项目时,Jenkins构建失败,并报以下错误: 意思就是项目里面配置的Gradle为2.10,但当前jenkins所用的版本为2.4,这个时候怎么办呢?有两种方法:一、把Jenki原创 2016-07-20 19:49:59 · 3522 阅读 · 0 评论 -
Ubuntu12.04下Android4.0.4源码的下载及其编译过程
本文转载至:http://www.jizhuomi.com/android/environment/427.html 一、下载源码 1、下载工具repo:https://android.googlesource.com/tools/repo/ 在本地目录建个bin的文件夹,进入bin文件夹;通过git下载:Java代码 git clone https://android.google转载 2016-07-18 19:34:25 · 663 阅读 · 0 评论 -
关于分享公共库ShareSDK的用法
这是我们公司自己封装的一套分享框架,不同于市面上的其他第三方分享。 该库暂时只收纳了:微信,QQ,微博等三个平台。 下面就介绍怎么用这个库 QQ分享资料链接:http://wiki.connect.qq.com/com-tencent-tauth-tencent-sharetoqq 新浪微博登录错误码一、第一步:初始化参数在需要启动分享的界面对分享的一些对象进行实例化,如下: @Overri原创 2016-01-22 17:00:19 · 1165 阅读 · 0 评论 -
Android ViewStub的应用
ViewStubviewStub是一个轻量级的View,用在动态切换布局中, 因为如果通过设置View.GONE等来控制布局文件的显示与否,虽然逻辑简单且易控制, 但是耗系统资源。所以ViewStub只能inflate一次,inflate一次后,它就会被置空,因此不能用来设置view,只能用来设置布局文件。 用法如下: 效果图: 如果是按照以往,注册界面我会新开一个界面,用Intent原创 2016-04-09 14:45:02 · 405 阅读 · 0 评论 -
OpenGLES Android篇零基础系列(三):OpenGL ES的渲染管道及VertexShader与FragmentShader
前言在前2篇文章中,我们都说到着色器,且在第二篇中正式说到,这着色器只能用在OpenGL ES2.x等可编程管道里面,而在OpenGL ES1.x是不能用的。但我们一直没有说这是为什么,两者有什么区别。那这篇我们就一起来学习下OpenGL ES中的渲染管道。正文管道,英文名叫Pipeline,相信用过FaceBook图片加载库的同学对这个管道并不陌生,因为SimpleImageDrawee里面也是用原创 2016-07-14 14:47:47 · 5461 阅读 · 0 评论 -
OpenGLES Android篇零基础系列(二):OpenGL各坐标系及模型矩阵(ModelViewMatrix),投影矩阵(ProjectionMatrix)等的深入理解
上一篇我们粗略的介绍了下GLES20 中 GLSurfaceView以及Render接口的使用。 对于三角形顶点坐标的定义并没有做出注释,其实在官方的ApiDemo中,它也是赤裸裸的,一个注释都没有,且代码写得一点都不敢恭维,不知道那位同行现在是不是还在google里面。下面贴出一小段官方的ApiDemo中的代码,一起鉴赏鉴赏: private static final int FLOAT_SIZ原创 2016-07-13 16:17:17 · 16732 阅读 · 0 评论 -
Python实现Android Apk 加固及多渠道打包
前言道高一尺,魔高一丈。现如今只做混淆的apk,在smali逆向中,可以说是裸奔。鉴于此,各大佬也都针对自己的应用进行了加固处理(加固原理自找度娘),与此同时,市面上各主流平台也都开源推出了自己的应用加固工具,比如360加固助手。 我们海豚睡眠就是采用360加固,然后再配合美团新一代打包神器walle,来打渠道包上线的。 基本流程就是:apk包 —-》 360加固 —–》多渠道打包—–》上线原创 2017-10-26 11:29:27 · 3919 阅读 · 1 评论 -
android中?attr/**与@drawable/**或@color/**等的区别
今天在写一个Demo的时候,突然遇到?attr/colorPrimary这个用法,一百度,竟然全网都是同一篇文章,我苦思冥想,最终还搬出了android源码,终于知道了意思,暂且记下来,作为备忘录吧。一、?attr/** 这个google叫预定义样式 这个是用在多主题时的场景,属性值会随着主题而改变。但并不是一上来就可以用的,必须做足以下准备工作:1,如果是自定义控原创 2015-11-24 17:11:45 · 9611 阅读 · 8 评论 -
android中?attr/**与@drawable/**或@color/**等的区别及用法
前言今天在写一个Demo,研究主题的时候,遇到了【?attr/colorPrimary】这个用法,由于网上都是千篇一律的回答,所以我只能硬着头皮去看源码了,茶壶煮饺子,暂且记下来,作为备忘录吧。一、?attr/**这个Google把它叫做“预定义样式”,字面意思就是“预先定义好的样式”。也就是相当于给这个样式定义一个变量,随后是可以进行赋值的。用的最多的场景就是自定义控件了,比如我现在需要自定义一个原创 2017-09-11 20:38:14 · 2306 阅读 · 0 评论 -
Android 第三方打开App后现Launcher打开导致重启的问题
这暂且做一个备忘录第一次遇到这个问题,测试同学说: 每次第一次安装App后,打开至第二级界面,退至后台,然后再从Launcher界面点击Icon图标启动,会发现App会重新启动,跳至首页,而不是跳至上次打开的第二级界面。但是如果把进程kill掉后,再从Launcher界面启动,跳于二级界面—-》Home退至后台—-》Launcher界面重新启动,这样就没问题了。开始,我也很纳闷,看他操作也的确这样原创 2017-08-17 16:49:45 · 3018 阅读 · 1 评论 -
OKHTTP之缓存配置详解
注意注意:转载一篇郭神的文章:http://chuansong.me/n/1185791251527前言在Android开发中我们经常要进行各种网络访问,比如查看各类新闻、查看各种图片。但有一种情形就是我们每次重复发送的网络请求其实返回的内容都是一样的。比如一个电影类APP,每一次向服务器申请某个电影的相关信息,如封面、简介、演员表等等,它们的信息都是一样的。显然,这样有点浪费资源,最主要的是这些重转载 2017-02-27 14:48:54 · 561 阅读 · 0 评论 -
Android7.0上拍照与选择照片Crash问题
在Android7.0系统上,Android 框架强制执行了 StrictMode API 政策禁止向你的应用外公开 file:// URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常,如调用系统相机拍照,或裁切照片。应对策略:若要在应用间共享文件,可以发送 content:// URI类型的原创 2017-02-24 19:24:04 · 6052 阅读 · 0 评论 -
Ubuntu14下repo的下载及Android源码下载
因为repo是google官方用python写的有关git命令的脚本, 因此第下载repo之前 首先安装git第一步:安装Git$sudo apt-get install git-core 第二步:安装curl因为要下载工具,android源码等,因此得安装一个下载工具,而Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传原创 2017-03-02 14:57:02 · 1835 阅读 · 0 评论 -
Android 常用的ADB 命令
1,查看某一路径的权限:adb shell ls -al /data 结果如图: 2,如果电脑通过 USB连接多台Android设备时,怎样通过命令操作指定的设备:adb devices 结果: 如果要针对上图的2IMFE1WG6N设备进行shell命令操作: adb -s 2IMFE1WG6N shell 【-s:为select的缩写,意为选择】3,用adb来对设备原创 2017-02-22 19:18:48 · 514 阅读 · 0 评论 -
Git远程操作详解
本文转载至:http://www.ruanyifeng.com/blog/2014/06/git_remote.html概述Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。git clonegit remotegit fetch转载 2017-03-01 18:02:02 · 319 阅读 · 0 评论 -
OpenGLES Android篇零基础系列(四):透视投影(PerspectiveProjection)与正射投影(OrthographicProjection)
前言 OpenGLES Android篇零基础系统前面已经写了三篇了,因为OpenGL里面的水着实是深,所以里面好多的概念都没有去查资料,如果一碰到不会的就去查,就感觉没有连贯性。所以就只能是先一笔带过,然后再慢慢研究。正文前面我们已经了解到,OpenGL其实是把物体从世界坐标系通过各种复杂的转变,计算等变成屏幕坐标系,显示在视口中。即:把三维物体转变为二维图像。而转变的方式有透视、正射,首先我们原创 2016-07-27 16:16:34 · 12006 阅读 · 7 评论 -
OpenGLES Android篇零基础系列(一):OpenGLES2.x可渲染管道基本流程
转载请注明出处前言OpenGL ES是OpenGL的一个子集,是针对手机、PDA和游戏主机等嵌入式设备而设计的。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 因此OpenGL ES作为第三方库被应用在android中。 到目前为止,OpenGL ES已经发展有了3个版本,OpenGL ES 1.0 , OpenGL ES原创 2016-07-12 19:17:03 · 7523 阅读 · 1 评论 -
Android开发常见异常与错误系列(一)
一、前言这系列文章是自己在平时开发过程中遇到的问题。之前只是记在云笔记上面,现在整理一下,发出来共享。 ps:像那些什么没有注册Activity呀,权限呀等最基本的就不再赘述。二、ADB连接异常有时我们发现,即使自己从任务管理器里面把adb.exe给干掉了,但还是不行,这时,你就可以尝试以下操作: [2014-07-30 17:09:11 - QtActivity] The connection原创 2016-04-08 17:59:37 · 1776 阅读 · 0 评论 -
Android中构建HTML5应用
Android中构建HTML5应用使用WebView控件 与其他控件的使用方法相同 在layout中使用一个标签WebView不包括导航栏,地址栏等完整浏览器功能,只用于显示一个网页在WebView中加载Web页面,使用loadUrl()Java代码 WebView myWebView = (WebView) findViewById(R.id.webvie原创 2016-04-01 11:37:51 · 432 阅读 · 0 评论 -
解决Genymotion启动报错:“unable to connect to the virtual device
当在AS中点击打开Genymotion时,其报错:unable to connect to the virtual device开始我已经这是被强了,所以就果断连上我的vpn,可结果发现并没有什么卵用。一直都用得很爽的,咋突然一下就不行了呢,猜想是不是某流氓软件造的,最后终于找到了解决办法:打开网络共享中心:然后按下面步骤操作:在最后一步的时候,你会发现原创 2015-11-23 14:23:28 · 3207 阅读 · 0 评论 -
android 程序错误全局处理
一、Application Crash Report for Android转:http://www.chengyunfeng.com/2010/07/application-crash-report-for-android你的Android程序是否会崩溃呢!是否有用户抱怨程序崩溃,但是您又收集不到崩溃时候的详细信息呢?是否希望给您的用户提供更好的用户体验呢?ACRA(Androi原创 2014-07-12 09:05:17 · 663 阅读 · 0 评论 -
Android 颜色渲染(九) PorterDuff及Xfermode详解
Android 颜色渲染(九) PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前, 由于构造ComposeShader需要 PorterDuffXfermode或者PorterDuff.Mode作为参数,所以在此先详细地了解下这两个类的作用,这对之后的绘图会有很大的帮转载 2014-07-10 16:53:32 · 654 阅读 · 0 评论 -
Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
本文最后修改时间:2014-3-10Android项目开发时,给公司人员安装,频繁升级,版本号总需要改,太麻烦,跟着时间变,自动升级才方便。Android项目开发新版时,手机上可能要装两个版本,一个是 老的正式版,一个是 新的开发版,想共存的话,要包名不一样,比如chrome是com.android.chrome,而chrome beta是com.chrome.beta,自动改转载 2014-07-11 10:30:14 · 809 阅读 · 0 评论 -
Android 下拉刷新框架实现
1. 关于下拉刷新下拉刷新这种用户交互最早由twitter创始人洛伦•布里切特(Loren Brichter)发明,有理论认为,下拉刷新是一种适用于按照从新到旧的时间顺序排列feeds的应用,在这种应用场景中看完旧的内容时,用户会很自然地下拉查找更新的内容,因此下拉刷新就显得非常合理。大家可以参考这篇文章:有趣的下拉刷新,下面我贴出一个有趣的下拉刷新的案例。图一、有趣的转载 2014-08-11 13:34:29 · 544 阅读 · 0 评论 -
android银联支付
在做的项目要用银联支付,老大要我研究,可是呢,可能是我不太会搜索,总之,两天过去,老大问我进展如何,支支吾吾。哎,现在才知道,我搜索到的网页大都说得不大清楚,一度让我怀疑自己的智商。未免跟我一样的童鞋有同样的困扰,现将开发银联支付的流程记录如下:准备工作:1.在线申请商家服服务【可以猛击此处跳转链接】2.申请服务以后就会有人负责技术对接啦,会给你商户号和密钥(订单签名用),转载 2014-09-10 13:16:33 · 648 阅读 · 0 评论