- 博客(39)
- 收藏
- 关注
原创 AS修改代码不生效的问题
问题:修改代码不执行的问题踩坑记录:1、配置文件 allowbackup 为false,没效果2、gradle版本 3.0.1改为3.2.0,没效果3、必须clean4、不clean,xml 生效 https://blog.csdn.net/l_o_s/article/details/830268765、三方插件https://www.jianshu.com/p/...
2019-03-22 16:13:23 1373
转载 HTTPS握手过程
HTTPS握手过程HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。具体是如何进行加密,解密,验证的,且看下图,下面的称为一次握手。PS:图片以下描述摘自:http://zhuqil.cnblogs.com1. 客户端发起HTTPS请求2. 服务端的配置采用HTTPS协议的服务器必须要有一套数字证书,可以是自己...
2019-01-28 16:56:07 534
转载 华为手机运行崩溃不显示报错信息的解决办法
用华为手机做开发的同学很可能都会遇到这样一个问题,就是程序出错了,但是却没有log错误信息输出,刚开始我也很懵逼,没搞懂怎么回事,回来问了一下别人,才知道需要这样进行设置。这里记录一下。拨号键盘输入* #* #2846579#* # * ,然后选择ProhectMenu,然后后台设置,然后LOG设置,LOG打开4.0以上的系统勾选【AP日志】【CP日志】...
2019-01-23 09:12:29 918
转载 Android 系统整体架构
前言看了Gityuan大神的博客,最近因为遇到一些工作上的问题踩了坑,决定正式开始阅读Android framework层源码,当然后面可能还会经历一个多月的毕设流程,等毕业回来工作也正式要迈上正轨了,好几个月没写博客了,前段时间因为感情上的问题消沉了几个月,好在现在走出来了,其实很早以前就想阅读framework了,趁着这段时间就开始吧。今天这篇文章主要梳理下Android整体的架构和系统启...
2019-01-17 11:12:24 226
转载 哈希冲突解决
哈希函数作为hashmap、hahstable的底层实现,会出现哈希冲突的情况,针对冲突,常用的解决方法有:1. 开放定址法开放定址法就是一旦发生冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。Hi = (H(key) + di) MOD m, i=1,2,…, k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列。...
2019-01-16 18:05:06 304
原创 JAVA多线程总结
开启多线程方法1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用线程池线程池常用线程池 4种newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newSchedu...
2019-01-16 16:33:34 116
转载 JVM虚拟机内存分配
1、程序计数器程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。多线程时,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储。我们称这类内存区域为“线程私有”的内存。2、栈stack线程私有,生命周期和线程相同。存放基本数据类型和对象的引用。基本数据类型有8种,Boolean,b...
2019-01-16 14:18:37 153
原创 程序锁逻辑
之前做的一个程序锁逻辑功能,重新整理了一下,有许多知识点,很不错,值得经常反思学习。程序锁功能简介:在app中程序锁界面,罗列app所有已安装app。如果对某个功能加锁,每次打开对应的app就要输入密码,达到保护隐私的目的。知识点在清单文件中增加 gettask权限新增开关,开启服务、关闭服务新增service开启看门狗,监视系统运行状态开启子线程不停循环activym...
2019-01-13 10:14:18 561
转载 Android组件化和插件化开发
Android组件化和插件化开发什么是组件化和插件化?组件化和插件化组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模...
2019-01-13 10:03:39 209
转载 webview安全问题
0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等。WebView功能强大,应用广泛,但它是天使与恶魔的合体,一方面它增强了APP的上网体验,让APP功能更多样化,另一方面它也引入了很多的安全问题。在过去几年WebView中被披露的重大漏洞包括了任意代码执行漏洞...
2019-01-13 09:56:43 1121
转载 webview使用注意问题
WebViewClient.onPageFinished()。你永远无法确定当WebView调用这个方法的时候,网页内容是否真的加载完毕了。当前正在加载的网页产生跳转的时候这个方法可能会被多次调用,StackOverflow上有比较具体的解释(How to listen for a Webview finishing loading a URL in Android?), 但其中列举的解决方法并不...
2019-01-13 09:50:49 229
转载 ANR原因及预防
ANR的全称是application not responding,意思就是程序未响应,类似于我们在windows上见到的程序未响应。ANR发生会使用户觉得我们的程序不友好,那么什么情况会导致ANR的发生呢?首先ANR的发生是有条件限制的,分为以下三点:1.只有主线程才会产生ANR,主线程就是UI线程;2.必须发生某些输入事件或特定操作,比如按键或触屏等输入事件,在BroadcastR...
2019-01-09 17:12:23 331
原创 AIDL机制详解
一、背景 ·1、AIDL出现的原因 在android系统中,每一个程序都是运行在自己的进程中,进程之间无法进行通讯,为了在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作,实现IPC(进行间的通信)与J...
2019-01-09 17:03:16 311
原创 自定义控件流程
看慕课网的视频,整理了自定义控件的流程,从自定义属性、测量、布局、绘制、手势事件、事件拦截等多个步骤。 1.自定义属性的声明与获取 分析需要的自定义属性,在res/values/attrs.xml定义声明,在layout xml文件中进行使用,在view的构造方法中获取。 2.测量 3种测量模式:exactly、at_most...
2019-01-09 15:50:02 614
原创 安卓图片加载优化
慕课网视频笔记,老师讲的很好,总结下笔记。图片存储优化:1.使用webp类型替换jpg png图片类型。2.图片压缩加载,关键字有:insamplesize、 injustdecodebonds。3.压缩图片解码率。用rgb_555替换rgb_8888,去掉透明度通道,减小压缩体积。4.inBitmap属性,图片复用内存,复用的图片尺寸要小于制定图片的尺寸,需要设置,用的比较少...
2018-12-19 14:57:49 270
原创 安卓混淆语法、关键字、模板
Android 混淆语法介绍首先我们先来看一下 keep 关键字关键字 描述keep 保留类和类中的成员,防止被混淆或者移除keepnames 保留类和类中的成员,防止被混淆,但是当成员没有被引用时会被移除keepclassmembers 只保留类中的成员,防止他们被混淆或者移除keepclassmembersnames 只保留类中的成员,防止...
2018-12-13 16:57:52 553
转载 git常用语法
关于版本管理,不同的项目组都会用到。SVN、GIT用的比较多,有不同系统工具软件,也可以使用命令,ide也会内置版本管理软件。 git常用命令,总结一下,以备开发的时候用到。git总结:git init:初始化git仓库 git add filename:将文件提交到暂存区 git commit -m "":将文件提交到当前分支 git status:查看git信...
2018-12-13 16:38:30 122
转载 Android中Sqlite的使用及性能优化
使用可以使用安卓原生的工具类:SQLiteOpenHelper 抽象类:通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数。SQLiteDatabase 数据库访问类:执行对数据库的插入记录、查询记录等操作。SQLiteCursor 查询结构操作类:用来访问查询结果中的记录。也可以使用greendao等三方框架,类似于后台开发数据库的操作,赋值给对象,在数据库中对对象进行增...
2018-12-03 15:50:55 171
原创 安卓部分手机访问网络慢问题
有客户反映手机网络异常慢的情况,找运维同事查看后台请求、框架比较。 我们使用测试机,同样的接口,volley框架会异常卡顿,okhttp框架回正常。比较框架之后,okhttp实现了SPDY策略,即某个服务器节点慢的情况下,会切换服务器,寻找快的节点。okhttp策略更好一些。 后来在百度上搜文章,可以配置手机APN选项,将网络协议ipv6改为ipv4,这样会快。 ...
2018-11-29 13:29:52 1046 1
原创 华为全面屏问题解决
线上有客户反映,app使用过程中,屏幕底部出现了黑屏或者系统桌面的内容,类似这样会影响客户使用,并且效果不好,而我们期望的结果是这样的 具体是因为:普通屏:纵横比为16:9,如1080x1920、1440x2560等,其比值为1.78,全面屏手机出现之前,Android中默认的最大屏幕纵横比(maximum aspect ratio)为1.86,即能够兼容16...
2018-11-29 13:20:34 1725
转载 app安全
五大反逆向技术:代码混淆、针对不同逆向工具保护技术、增加逆向难度(java代码native化)、动态加载技术、代码验证技术代码混淆:工具:proguard常用操作:保留选项、压缩、优化、混淆。功能:混淆代码(注意使用混淆文件的时候需加入自己的具体操作以防程序无法运行)删除无用Log:可删除调试和分析代码逻辑时的log,也可删除不使用的调试接口和测试环境问题:混淆...
2018-11-14 11:40:47 184
原创 安卓安全探究
1 SSL证书有效性检测 建议使用真实的ssl证书,提高通讯安全性2 进程安全 动态注入防护检测:原因:给Android应用加壳是保护Android应用的常见方法。侠义上的Android加壳,只是将Android源代码隐藏起来,骇客仍然可以通过静态或者动态调试的方法获取到Android应用的源代码。因此,在加壳的同时增加反调试功能能够有效的对抗骇客的入侵行为。常见的反调试思路有:1...
2018-11-13 14:03:38 147
原创 网络框架比较(二)
自己重新整理了一份网络框架比较,对比了多个框架。目前使用的比较多的volley、okhttp、retrofit,从官网找了资料,根据demo和总结,最终形成了表格。项目中volley部分机型、特定网络就会卡顿,特别慢。retrofit要定义接口,建议和rxjava一起使用,看是否习惯,是否容易上手。推荐使用okhttp,方便封装调用。安卓网络框架比较 说明:网络...
2018-11-13 13:56:47 293
原创 图片压缩之鲁班算法
LubanLuban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略 项目描述目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。于是自然想到app巨头“微信”会是怎么处理,Luban(鲁班)就...
2018-11-01 15:14:31 687
转载 code review常见问题
路线图 常见代码问题 常见的潜在代码问题是当前直接会导致BUG、故障或者产品功能不能正常工作的类别。 空值 空值恐怕是最容易出现的地方之一。 常见错误有: a. 值为NULL导致空指针异常; b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。 导致以上结果的原因主要有: 无此记录、有此记录但由于SQL访问异常而没查到、网络调用失败、记录中有脏数据...
2018-10-31 17:51:55 319
原创 实际开发总结
项目开发过程中,会遇到许多线上问题。一些可能测试场景没有覆盖到,或者代码改动之后不是全量测试;还有一些事产品设计不清晰,产品设计问题;还有一些是开发的问题,和自身经验、素质有关。这些就需要不断总结,避免以后出现类似的错误。 1、复杂判断使用if return判断。在开发中,主要流程的判断逻辑可能会比较复杂,多个if else 嵌套,多个层次,多个括号,很容易弄混逻辑。并且...
2018-10-31 15:11:38 115
原创 安卓自定义控件原理
Android自定义控件之基本原理前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理。实际工作中,项目里会有需求。会在网上找不同的轮子,进行比较、完善。许多代码看得懂。具体复杂的效果,不是数学出身,美学一般,所以都是参考。 自定义控件...
2018-10-31 13:43:00 252
转载 【腾讯Bugly干货分享】Android进程保活招式大全
【腾讯Bugly干货分享】Android进程保活招式大全本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ac4a0ea374c75371c08ce8作者:腾讯——张兴华目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 Android 进程拉活进行一个总结。Android ...
2018-10-31 13:35:05 137
原创 安卓handler机制
安卓自从设计之初,为了避免主线程卡顿的问题,禁止在主线程种进行网络请求;禁止在子线程更新ui,避免UI错乱。为了子线程、主线程间通信,设计了handler机制。handler机制是面试必考的科目,考察求职者理解深度、表达能力的,总结一下。 借用的别人的图,表达的已经很详细了。 补充一个阻塞式循环知识点:主线程的死循环一直运行是不是特别消耗CPU资源呢? 其实不然,...
2018-10-31 13:33:17 197
转载 安卓网络框架比较
引言目前网络请求框架也比较多,本文针对封装的比较完善的Volley,Okhttp,Retrofit研究比较了,才知道选择哪个最适合。基础HttpUrlConnection,android-async-http,httpclient(高版本废弃),xUtils3(作用广泛而不精),不讨论。一.Volley来源: Volley详解google推出的异步网络请求框架和图片加载框架。特...
2018-10-30 15:11:09 488
转载 安卓图片加载框架选型
前言图片加载在 Android开发项目中非常常见,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而现在图片加载开源库越来越多,我们应该选用哪种呢?今天我就给大家分别介绍 & 对比现今主流的图片加载框架。目录图片加载开源库.jpg1. 主流的图片加载库-介绍从Github上的Star数排序来看,现在主流的Android图片加载库有Universal-...
2018-10-30 14:58:14 242
原创 多线程
为了提高程序运行效率,同时随着CPU性能提高,小型台式机、大型电脑都有了多核多线程概念。 线程和进程的区别,进程是CPU处理信息的最小单位,线程是进程可以再细分的概念。 多线程提高效率的同时,同时会带来线程安全等问题。使用同步(synchronized)简单说可以理解为共享的意思,如果资源不是共享的,就没必要进行同步。设置共享资源为同步的话,可以避免一些脏读情况。...
2018-10-30 14:44:06 94
转载 HASH冲突解决方案
一)哈希表简介非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。 哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希...
2018-10-30 14:13:30 241
转载 java集合框架
Java中的集合框架定义:Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象。作用:集合可以:1、在类的内部,对数据进行组织;2、简单而快速的搜索大数量的条目;3、有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除元素;4、有的集合接口,提供了映射关系,可以通过关键字(key)快速的查找到对应的唯一对象,而这个...
2018-10-29 14:28:21 94
转载 虚拟机GC算法总结
前言不同的内存区域采用不同的垃圾收集算法 而不同垃圾收集算法决定了垃圾收集的效率 & 效果 本文将全面讲解垃圾收集算法,包括标记-清除、复制、标记-整理等,希望你们会喜欢在接下来的日子,我会推出一系列讲解JVM的文章,具体如下;感兴趣可持续关注Carson_Ho的安卓开发笔记示意图目录示意图1. 垃圾收集算法 类型垃圾收集算法 类型 分为4类,如下...
2018-10-29 13:46:08 296
原创 手写单例模式
单例模式作为常用的设计模式,在项目中经常使用。手写单例模式,考察面试者的java基础,关键字的理解。面试了很多面试者,能完整写出来的,线程安全的,不到三分之一。还是比较考研基础的。常用写法: 饿汉模式:public class Singleton { private final static Singleton INSTANCE = new Single...
2018-10-29 13:35:15 218
原创 23种设计模式
设计模式在开发中经常使用,按创建、结构、策略,类似盖房子,先准备原料,然后搭建结构,房子有具体功能,有不同的策略模式。创建型 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式...
2018-10-29 11:44:43 84
转载 接口设计6大原则
面向对象的六大原则 单一职责原则所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。通俗的说,即一个类只负责一项职责,将一组相关性很高的函数、数据封装到一个类中。 开闭原则对于扩展是开放的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其...
2018-10-29 11:24:01 4365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人