Android
Android架构师丨小熊
这个作者很懒,什么都没留下…
展开
-
Android 这些基础知识,你知多少?
android的一些基础知识,你又知道多少了,你都掌握了吗?QA:“那个谁谁谁,我刚刚按照上一次那样操作这款款APP,我死活是跑不起测试脚本了。(内心独白:我去,这个奇怪的问题,一定是他给我的安装包有问题”)DEV:“嗯?还有这样的问题,那你看一下你手机和电脑连接好了么?。(内心独白:一定是数据线没有连接好)”QA:这个、这个...“咦,这个怎么看?(内心独白:我去,我怎么知道怎么...原创 2019-07-12 21:54:34 · 123 阅读 · 0 评论 -
Android 性能优化系列一 :APK极致优化
本篇文章主要针对 Android性能优化 中 Android APK的大小优化虽然现在网速已经非常快,用户流量也很多,但是对于我们的 Android apk 文件进行优化还是很有必要的,动不动几十上百兆的大小,用户体验还是很不好的,下面我们就来整理一下 Android apk 的优化方法一、icon 图标使用 svg在我们的App中会有很多icon,而且美工小姐姐一般都是成套的给...原创 2019-07-13 22:10:50 · 147 阅读 · 0 评论 -
Android 折叠屏适配攻略
随着三星 Galaxy Fold 和 华为 Mate X 的发布,折叠屏手机开始进入大家的视线。在改变手机体验的同时,也给我们开发人员在适配方面带来了更多的挑战。本文给大家介绍一下 Android 开发中和折叠屏相关的一些概念,以及如何进行折叠屏的适配。折叠屏适配折叠屏之所以需要适配,是因为我们的应用有可能在运行的过程中,所在的屏幕尺寸发生了变化,这种情况对现有项目多少都会产生一些问题...原创 2019-07-14 20:38:55 · 2541 阅读 · 0 评论 -
Android笔记:Android开发中的一些技术细节
最近总结了一些开发中应该注意的技术细节,特此记录下Message obtain跟直接new的区别 :本质是Message obtain是采用享元模式,所以效率会高一些Rxjava操作符设计模式 :看了一下源码其实就是装饰器模式Gson泛型擦除:Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类...原创 2019-07-10 21:55:13 · 231 阅读 · 0 评论 -
Android 性能优化 : App启动优化
App启动,相信大家都是非常熟悉了,那为何我们需要对App启动做优化呢,这里就要先对我们Android 从开机到启动我们的App进入主页面这一流程做一个简单的阐述了.一、Android启动流程我们先来看一张流程图首先呢,我们Android手机开机时是先加载一个Boot程序,有点类似Windows开机时的开机引导程序,然后通过Boot程序加载Lux内核,随后是调用Native的i...原创 2019-07-15 17:27:49 · 170 阅读 · 0 评论 -
关于Android布局优化和代码优化的建议
关于Android布局优化和代码优化的建议这篇文章主要是和大家分享关于Android布局优化和代码优化的一些建议,希望能对大家有所帮助,以及促进和大家的交流学习。一、布局优化1.1 include优化重用布局文件标签可以允许在一个布局当中引入另一个布局,那么比如说我们程序的所有界面都有一个公共的部分,这个时候最好的做法就是将这个公共的部分提取到一个独立的布局中,然...原创 2019-07-15 19:57:40 · 462 阅读 · 0 评论 -
Android进阶知识:ANR的定位与解决
1、前言ANR对于Android开发者来说一定不会陌生,从刚开始学习Android时的一不注意就ANR,到后来知道主线程不能进行耗时操作注意到这点后,程序出现ANR的情况就大大减少了,甚至于消失了。那么真的是只要在主线程做耗时操作就会产生ANR吗?为什么在有时候明明觉得自己没在主线程做耗时操作也出现了ANR呢?一旦出现莫名其妙的ANR,怎么定位导致ANR的产生的位置和解决问题呢?那么接下来...原创 2019-07-15 20:49:18 · 793 阅读 · 2 评论 -
Android基础知识:项目架构基础概述
1、前言这篇记录一下架构方面的相关知识总结以及自己学习后对模块化、组件化和插件化这三化概念的理解。2、MVC、MVP、MVVM2.1 MVCModel-View-Controller,即模型-视图-控制器。Model负责获取数据,View负责界面展示,Controller负责交互控制,是最经典的架构模式。例如Android中的ListView就是MVC运用的典型例子。界面里的L...原创 2019-07-15 21:18:45 · 243 阅读 · 0 评论 -
Kotlin基础:用Kotlin约定简化相亲
如果用代码实现择偶标准的判断逻辑,会很容易写出又臭又长的代码。本文通过 Kotin 独有的语法特性“约定”来增加代码的可读性、复用性。业务场景假设女生的择偶标准如下:未婚且岁数比我大,如果对方是本地帅哥则对收入降低标准(年薪>10万),如果对方非本地则要求岁数不能超过40岁,且年薪在40万以上。(BMI 在 20 到 25 之间的定义为帅哥)业务分析将候选人组织成列表,在...原创 2019-07-18 16:21:31 · 138 阅读 · 0 评论 -
整理了一波 Android 开发的好习惯
一、Android编码规范1.java代码中不出现中文,最多注释中可以出现中文;2.局部变量命名、静态成员变量命名:只能包含字母,单词首字母出第一个都为大写,其他字母都为小写;3.常量命名:只能包含字母和,字母全部大写,单词之间用隔开;4.layout中的id命名:命名模式为:view缩写_模块名称_view的逻辑名称view的缩写详情如下LinearLayout:ll...原创 2019-07-18 19:58:56 · 133 阅读 · 0 评论 -
关于Android 如何处理滑动冲突
在 Android 开发中,滑动冲突总是我们一个无法避免的话题。而对于解决方案却是众说纷纭。比如 RecyclerView 嵌套 RecyclerView,直接通过相关方法禁掉内部 RecyclerView 的滑动;ScrollView 嵌套 RecyclerView 直接把 ScrollView 替换为 NestedScrollView 等等。但我们今天要说的是在自定义 View 中遇到滑动...原创 2019-07-18 20:35:46 · 160 阅读 · 0 评论 -
Android开发中碰过的几个误区! | 多线程篇
这篇文章我会先分析一些大家可能踩过的雷区,让大家少掉头发。然后再列出一些可以改进的地方。1.在代码中直接创建新的Thread.new Thread(new Runnable() { @Override public void run() { } }).start();以上的做法是非常不可取的,缺点非常的多,想必大部分朋友...原创 2019-07-12 16:18:37 · 512 阅读 · 0 评论 -
Android Apk包瘦身
1、Android 编译打包流程及APK构成1.1、Android 编译打包流程android编译打包流程(1)、通过Java编译器对工程本身的java代码进行编译,产出为.class文件。这些java代码有三个来源:app的源代码;由资源文件生成的R文件(aapt工具);以及有aidl文件生成的java接口文件(aidl工具)。(2)、通过dex工具将上一步生成的.c...原创 2019-07-23 20:50:55 · 186 阅读 · 0 评论 -
Android 多线程误区,我不信你们都懂!
前段时间在组内做了一下现有的代码分析,发现很多以前的legacy code多线程的使用都不算是最佳实践,而且坏事的地方在于,刚毕业的学生,因为没有别的参照物,往往会复制粘贴以前的旧代码,这就造成了坏习惯不停的扩散。所以本人就总结分析了一下Android的多线程技术选型,还有应用场景。借着和组内分享的机会也在简书上总结一下。因为自己的技术水平有限,有不对的地方还希望大家能多多指正。这篇文章我会先...原创 2019-07-16 20:46:26 · 115 阅读 · 0 评论 -
LayoutParams 你知道多少?
从概念讲起LayoutParams,顾名思义,就是布局参数。而且大多数人对此都是司空见惯,我们 XML 文件里面的每一个 View 都会接触到 layout_xxx 这样的属性,这实际上就是对布局参数的描述。大概大家也就清楚了,layout_ 这样开头的东西都不属于 View,而是控制具体显示在哪里。LayoutParams 都有哪些初始化方法通常来说,我们都会把我们的控件放在 X...原创 2019-07-16 21:04:50 · 257 阅读 · 0 评论 -
带你动手实现 MVP+Clean架构!
MVP + CleanClean 架构,有的同学可能有所耳闻。肯定也有相当一部分同学没听说过 Clean 架构。本篇文章重要讲解的是 Clean那么先来解释一下,何为 Clean?概念Clean,中文意思为清洁的、整齐的。所以也可以称其为 "清晰架构"。它是一种分层架构方式,将 presentation 层(实现层)、data 层(数据层)以及domain 层(业务...原创 2019-07-16 21:39:15 · 297 阅读 · 0 评论 -
谈一谈Android应用性能优化
Android的性能优化随着 Android 应用的开发,上线到越来越多的人开始下载,使用APP,对于不同手机,不同用户来说使用的体验可以说是决定这个用户是否还会继续使用这款APP最重要的衡量标准。比如:手机使用APP越来越卡 手机莫名的发烫 网络问题,内容加载不出来 手机掉电十分得快而要提升用户的体验,就不得不说要对 Android 应用的性能进行优化。当对于性能优化有一...原创 2019-07-19 16:38:27 · 147 阅读 · 0 评论 -
Android全方位性能调优:冷启动白屏问题的分析和解决
问题重现我初次发现这个问题是在升级了Android Studio 2.0之后,当时Android Studio的版本是从1.5直接升级到了2.0,一个如此大版本的跨跃说明改动肯定是比较大的。然后从这个时候开始,每次我们将程序安装到一台新手机上并首次启动时,都会经历一个很长的白屏时间,如下图所示:上图中的播放速度是实时速度,没有经过加速或减速。可以看到,这就是一个空项目,里面几乎没有...原创 2019-07-19 17:00:18 · 125 阅读 · 0 评论 -
Android:用图帮你了解https的原理
Http存在的问题上过网的朋友都知道,网络是非常不安全的。尤其是公共场所很多免费的wifi,或许只是攻击者的一个诱饵。还有大家平时喜欢用的万能钥匙,等等。那我们平时上网可能会存在哪些风险呢?泄密,个人隐私、账户密码等信息可能会被盗取。 篡改,收到的数据可能被第三方修改过,或被植入广告等。 假冒,访问的站点非目标服务器站点。如域名欺骗、域名劫持、钓鱼网站等。可能住你隔壁穿人字拖、说话都...原创 2019-07-19 17:19:17 · 192 阅读 · 0 评论 -
基于TinyPng,自己开发一个IntelliJ插件
Hello Plugin创建项目打开Intellij,选择file -> new project 从左侧的选项中 选择Gradle,然后选择IntelliJ Platform Plugin,然后你可以根据自己对选择,选择java、kotlin等 GroupId - groupId 新项目。如果您计划在本地部署项目,则可以省略此字段。 ArtifactId - artifac...原创 2019-07-17 14:38:02 · 128 阅读 · 0 评论 -
Android全方位性能调优:Profiler
Android studio的分析工具分为:CPU、Memory、NetWork、Energy.CPU Profiler:从Android profiler面板选择指定设备和应用程序进入到CPU Profiler界面,我们能够直观的看到CPU的使用情况和线程的情况.分别介绍下相关标号的CPU Profiler的相关功能:1.事件时间轴:表示当前分析的应用程序随着用户交互在不同活动的...原创 2019-07-19 17:45:01 · 390 阅读 · 0 评论 -
摸鱼不如摸Kotlin之函数
消除静态工具类:顶层函数和属性Java中的代码都要写到类的函数里面,但很多时候创建的类只是作为静态函数的容器。但在Kotlin中就不需要创建无意义的类,它可以把函数直接放到代码文件的顶层,不用从属于任何的类。举个栗子,创建一个strings包在package strings下创建joinToString函数fun<T> joinToString(collection:...原创 2019-07-29 16:48:18 · 83 阅读 · 0 评论 -
性能优化第一步:Profiler的使用
CPU Profiler首先来说,CPU Profiler并不是专门用于处理页面卡顿掉帧的,准确说:CPU Profiler是用来查看每个线程,在某段一段时间内执行了哪些函数,以及在其执行期间每个函数消耗的 CPU 资源。 专门针对卡顿掉帧问题可以使用内置的小工具:systrace。不整官网那么多“花里胡哨”的介绍,咱们直击上应用方式。1、使用界面点击启动后,我们就可以看到...原创 2019-07-29 17:26:25 · 1525 阅读 · 0 评论 -
JAVA加密-加密运算合集与性能分析
加密介绍单向加密单向加密又称为不可逆加密算法,其密钥是由加密散列函数生成的。单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:1、MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文; 2、SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数...原创 2019-07-29 17:42:50 · 1326 阅读 · 0 评论 -
JAVA加密-关于对称加密算法 DES、AES
算法介绍常见算法DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高; AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、5...原创 2019-07-29 17:54:54 · 206 阅读 · 0 评论 -
APP 热修复都懂了,你会 SDK 热修复吗?最全方案在这里!
前言刚开始要做 SDK 热修复,我是拒绝的 ~某日,解决完一个线上 bug 后,我冒出了一个念头:让我们的 SDK 也具有热修复的能力呗!但是查了查,网上资料少、很多热修复方案只针对app……可是我都拍胸脯向老大夸口了,焉有退缩的道理?!加上万一以后手抖,出了个什么大 bug 或者兼容问题,我的职业生涯不就要终结了!?我滴乖乖,保命要紧!还是赶紧做个保底方案吧。...原创 2019-07-24 20:17:12 · 358 阅读 · 0 评论 -
Shadow对PackageManager的处理方法
在Android开发中免不了使用PackageManager获取当前应用的一些信息。Class for retrieving various kinds of information related to the application packages that are currently installed on the device. You can find this class...原创 2019-07-24 20:43:08 · 394 阅读 · 0 评论 -
一篇文章带你领略Android混淆的魅力
在 Android 日常开发过程中,混淆是我们开发 App 的一项必不可少的技能。只要是我们亲身经历过 App 打包上线的过程,或多或少都需要了解一些代码混淆的基本操作。那么,混淆到底是什么?它的好处有哪些?具体效果如何?别急,下面我们来一一探索它的"独特"魅力。1、混淆简介代码混淆(Obfuscated code)是将程序中的代码以某种规则转换为难以阅读和理解的代码的一种行为。混淆的...原创 2019-07-17 21:04:09 · 147 阅读 · 0 评论 -
Android之Handler浅析
Handler相信每个从事Android开发的小伙伴都非常熟悉了, 最常用的场景就是在子线程中进行数据操作然后通过handler消息机制通知到UI线程来更新UI,地球人都知道在子线程中更新UI,一般情况下都会报错。每每出去面试被问到“handler原理”,“消息是怎么从子线程发送到主线程的”等等handler底层的实现,就懵逼了。虽然网上关于分析handler的博客问丈夫非常多,已经有很多大佬...原创 2019-07-17 21:54:27 · 152 阅读 · 0 评论 -
Android安全之旅—ProGuard篇
ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,是Android平台重要的防护手段之一。ProGuard功能ProGuard主要功能及执行流程如下图所示:输入jar或者aar等格式的java字节码文件集合并且传入自定义配置 shrink流程删除无用的类、方法和属性 optimize流程进一步优化字节码,主要表现为优化逻辑 obfuscate流程对优化后的...原创 2019-07-17 22:05:28 · 175 阅读 · 0 评论 -
JAVA加密- 关于非对称加密算法 RSA、DSA
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信...原创 2019-07-30 16:10:52 · 1189 阅读 · 0 评论 -
JAVA加密- 关于位运算加密
位运算介绍程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。位运算虽说是语言的基础,但是应用层基本很少有涉及到此,很多开发同学可能了解的不是蛮清楚,本文只对算法用的位运算做一个简单介绍,其他运算符将一笔带过,感兴趣的可以在好好的深入学习一下"^" 异或运算相同为0 不同为1例子 2^3=10010^0011=0001"...原创 2019-07-30 16:24:28 · 266 阅读 · 0 评论 -
Android中的线程捕获
前言最近上的一个版本中,突然bugly的Java异常一个都没有了,正好升级了bugly的版本,还以为接入有问题,排查一些正常,特自信的说版本代码优秀…0 bug~~~可是后面细想几百万的DAU,一个Java异常都没有都没有,这太不正常了。目前项目中捕获全局异常的有:bugly、umeng、自己。排查bugly的捕获异常代码实现文件路径:com.tencent.bugly.c...原创 2019-07-30 16:35:29 · 188 阅读 · 0 评论 -
Android 组件化最佳实践之 AucFrame 统一管理 Gradle
管理 lib 的 Gradle首先,我们再看一遍 AucFrame 的架构图。我们从下开始往上搭建,在根目录创建 lib 文件夹,在项目中新建一个 Android Library 类型的 base module,然后删除其中的 base.iml,因为不删除 base.iml 文件的话会影响后续的移动,把 androidTest 以及 test 测试目录删了也没事,然后我们把 base ...原创 2019-07-25 16:20:52 · 859 阅读 · 0 评论 -
只需一行代码完成多语言切换
背景之前总是有开发者反馈我应用切换了语言,可是工具类获取的 string 却没有发生改变。其实这个问题很简单,你切换语言的 Context 只作用在了你的 Activity 上,并没有对你的 Application 做同样的操作,知道了这点,那么解决问题就很简单了,为了省事,我给大家封装了 LanguageUtils,直接一行代码便可完成多语言的切换,类似微信的语言切换分分钟便可完成...原创 2019-07-25 16:48:22 · 1587 阅读 · 2 评论 -
好好管理你应用的文件夹,别再乱用了
为什么要管理文件?Android手机一直以来被人诟病越用越卡,越用存储空间越少,经常有要靠各种清理app清理垃圾,到最后不得对手机进行双清,原因除了硬件老化和Android的底层实现问题之外,开发者对文件管理的忽视制造出大量无法清理的“垃圾”也是造成手机卡慢的原因之一。Android的开放性给了开发者巨大的自由度,但自由不是让我们滥用权限和随意开发的借口,每一个开发者都应该注重细节,连...原创 2019-07-25 17:17:04 · 819 阅读 · 0 评论 -
Android开发:观察者模式
1.定义:观察者模式定义对象间的一种一对多的关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。2.UML建模图Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存...原创 2019-07-30 16:59:42 · 174 阅读 · 0 评论 -
Android多线程技术选型最全指南
维度的Trade Off今天我想先说一个英文单词,叫Trade Off。 中文翻译过来可以说叫权衡,妥协,但是这么干巴巴的翻译可能不能体现这个词的牛逼之处,我来举个例子。比如迪丽热巴和谢娜同时追求我,虽然迪丽热巴颜值更高,但是考虑到谢娜在湖南台的地位以及和她在一起之后能给我带来的曝光度,我选择了谢娜。。。。(以上纯属段子)Anyway。。。这就是Trade Off,一个很艰难的选择...原创 2019-07-21 21:35:59 · 134 阅读 · 0 评论 -
聊一聊Kotlin函数
1.表达式函数体通过下面这个简单的例子看下函数声明相关的概念,函数声明的关键字是fun,嗯,比JS的function还简单。Kotlin中参数类型是放在变量:后面,函数返回类型也是。fun max(a: Int, b: Int) : Int { if (a > b) { return a } else { return b ...原创 2019-07-25 19:51:40 · 283 阅读 · 0 评论 -
Android全埋点-页面浏览事件
全埋点全埋点也叫无埋点,自动埋点。是指预先自动收集用户的所有行为数据。然后就可以根据收集的数据从中筛选出所需的行为数据进行分析。采集的事件类型全埋点采集的事件主要包括以下4种类型:AppStart事件指应用程序的启动,它包括冷启动和热启动。AppEnd事件指应用程序退出,它包括了应用程序的正常退出、Home键进入后台、应用程序被强杀以及应用程序崩溃。AppV...原创 2019-07-22 16:37:47 · 630 阅读 · 0 评论