自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不是CC哥

每天多点正能量,生活更加美好

  • 博客(102)
  • 收藏
  • 关注

原创 Developer 路径

dumpsys使用 Logcat 写入和查看日https://developer.android.com/studio/debug/am-logcat#memory-logsAndroid Profiler

2021-10-08 14:44:26 126

原创 健身误区避雷及建议

不要让体重蒙骗。 水分、大小便; 每星期拍照片比较; 饮食出错; 没3小时一次; 控制卡路里,清淡为主, 进食 蛋白质 :训练3次到5次 进食 体重* 1.2 -1.5g ; 每次训练后, 30-35g蛋白质 + 一条香蕉; 多喝水。 2-3 L/天 训练强度不足; 训练量 同一组肌肉每次可进行多少组训练动作; 重量与项数 erm 最大重量;6-12 次 休息时间 60-90s 缺少腿部训练; 每周一次; 充分睡眠...

2021-07-23 09:43:10 284

原创 如何用git命令生成Patch和打Patch

在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情。什么是patch?简单来讲,patch中存储的是你对代码的修改 什么是生成patch?生成patch就是记录你对代码的修改并将其保存在patch文件中 什么是打patch?打patch就是将patch文件中对代码的修改,应用到源代码,从而把对代码的修改应用到code中。尽管本身Linux命令里有diff和patch两个命令可以生成patch和打patch。但是有两个缺点值得注意:...

2021-04-28 17:35:17 3586

原创 关于dagger2 使用无法自动生成问题解决 

按JAVA语言区分 建议Gradle构建版本升级到最新JAVA目标model的dependenciesimplementation('com.google.dagger:dagger-android:2.23')implementation('com.google.dagger:dagger-android-support:2.23') /*{ exclude group: "javax.inject", module: "javax.inject"}*/annotationProc

2021-04-06 11:28:10 437

原创 gradle 使用 exclude 解决jar包冲突

1. 查看冲突的jar包;一眼能看出来的跳到第二步; 遇到隐藏比较深的就比较难受了,肉眼完全看不出来,此时使用以下命令查看:gradlew -q app:dependencies 查看依赖树;比如:Duplicate class androidx.dynamicanimation.animation.DynamicAnimation$OnAnimationUpdateListener found in modules classes.jar (androidx.dynamicanimation.

2021-03-31 16:40:33 25941 2

转载 dagger2 使用无法自动生成dagger + component 等问题集錦

一、dagger2 使用无法自动生成dagger + component 问题一般两种方法进行注册:方法一:实体类Product 构造方法:class Product @Inject constructor() { fun showPro(): String { return "shb##@@" }}桥梁 component:@Componentinterface ProductComponent { fun inject(mai...

2021-03-29 22:46:59 896

转载 Android.bp 语法浅析

随着 android 工程越来越大,包含的 module 越来越多,以 makefile 组织的项目编译花费的时间越来越多。Google 在 7.0 引入了 ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。7.0 的时候 android 项目还是有大部分是由 makefile 来组织的,因此 Google 引入了 kati 将 makefil

2021-01-22 16:45:22 4420

转载 Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)

Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)引入 aar在模块源码根文件下新建文件夹 libs,复制要引入的 arr文件至此,新建 Android.bp新增如下语句,这里以 lottie.arr 为例android_library_import { name: "lib-lottie", aars: ["lottie-2.8.0.aar"], sdk_version: "current",}然后在模块目录下 Andro.

2021-01-18 17:09:39 4567 2

原创 2021-01-16

您从Android获取的hprof文件具有android特定的格式。 你应该把hprof文件从Android OS转换成标准的hprof格式。 为此,您可以使用位于AndroidSDK/tools/hprof-conv。例如: hprof-conv android.hprof androidxxx.hprof 然后在Memory Analyzer中打开mat.hprof。编辑:hprof-conv可能位于AndroidSDK/platform-tools/在一些捆绑。如果您使用的是E.

2021-01-16 15:16:31 75

翻译 Dagger 2 基本用法

1.Dagger2是什么?Dagger2是一个依赖注入(Dependency Injection)框架。什么又是依赖注入呢?借别人的话来说,就是“目标类中所依赖的其他类的初始化过程,不是通过在目标类中编码的方式完成,而是通过其他手段把已经初始化好的实例自动注入到目标类中”。再换种方式来说,就是把类实例的初始化过程都挪至一个地方统一管理,具体需要哪个实例时,就从这个地方取出(注入到目标类中)。他的主要作用,就是对象的管理,其目的是为了降低程序耦合。2.基本的概念我...

2020-07-08 15:41:50 1770 1

原创 烧写 pixel 最新版本

最新版本地址:https://developer.android.com/preview/download#flashtooladb 获取及替换:https://developer.android.com/studio/releases/platform-tools烧写方法:https://developers.google.com/android/images#instructions1. 打开开发者模式,去掉锁。2. adb reboot bootloader;3. fa

2020-06-04 11:57:54 320

原创 Android studio build output 编译log 中文乱码

1. 双击shit 打开查找窗口2. 输入Edit Custom VM Options 打开studio64.exe.vmoptions 文件,即C:\Users\uncleMonster\.AndroidStudio3.6\config\studio64.exe.vmoptions3. 加入 -Dfile.encoding=UTF-8

2020-05-20 11:38:56 1598

转载 Android运行环境Dalvik模式和ART模式的区别对比

Android系统是以Linux系统为底层构建的,开源的Android系统需要配置到不同硬件配置的设备上,为了降低应用的开发难度,在Linux底层之上构筑了一个名为"Dalvik"的虚拟机,名为虚拟机,实际是一种应用编译模式,Android4.4开始引入的ART模式是一种全新的应用编译模式,Android5.0彻底从Dalvik转换到ART。1、介绍:Dalvik模式:Dalvi...

2019-11-14 15:58:49 659

原创 Android获取窗口可视区域大小: getWindowVisibleDisplayFrame()

getWindowVisibleDisplayFrame()方法getWindowVisibleDisplayFrame()是View类下的一个方法,从方法的名字就可以看出,它是用来获取当前窗口可视区域大小的。此方法的原型为public void getWindowVisibleDisplayFrame(Rect outRect);1它接受一个Rect对象作为参数,执行过...

2019-10-26 15:14:09 630

转载 Android 文字绘制中的 FontMetrics 和 drawText()

在绘制文字的时候,不可避免的用到 FontMetrics 类和 Canvas#drawText() 方法,这里详细介绍下。FontMetrics先看下面这张图:FontMetrics Lines图中有五条线,自上而下分别是:top line: 文字可绘制区域最顶部的线; ascent line: 系统推荐的,文字可绘制区域顶部的线; baseline: 文字绘制的...

2019-10-25 09:36:51 365

转载 Android AIDL SERVICE 双向通信 详解

起因 是这个blog 提到了 用webview 的时候 用开启子进程的方式 可以极大避免内存泄露。然后有很多人私信我 这种情况下如何 相互通信的问题。当然广播是一个比较不错的选择,只不过广播的方法 能够传递的值比较有限。messenger 也只能做单向传递消息。(当然你如果用2个 是可以双向的。单独的messenger是只能单向的)。so,这里给出一个简单的小例子,教你如何处理 ...

2019-10-16 10:20:59 261 1

转载 Android Studio内存大小的设置

近来在做项目的时候,因为种种原因,经常一次打开好几个AS的窗口。但是窗口开多了,问题也就来了,卡的不得了,简直让人有种想砸电脑的冲动,可错又不在电脑,迁怒与它又不太好,万一被老板发现了,又得挨批,所以只能求助度娘。首先我们看看当前AS的内存大小:在AS中打开设置,搜索Show memoryshow memory.jpg然后将Show memory indicator这个选...

2019-10-14 11:22:20 2440

翻译 git的冲突解决–git rebase之abort、continue、skip

(1)应用实例描述假设在github或者gitoschina上建立了一个项目,默认分支为master分支,远程master分支上c.sh文件内容:开发者A、B分别将项目拷贝到自己本地进行开发某一天,开发者B提交c.sh,并且提交成功,之后,开发者A在本地代码并没有和远程master分支的代码同步的情况下,对本地的c.sh进行了修改,修改后c.sh内容如下:修改后,开发者A...

2019-08-29 09:51:54 13566

转载 Mat 用法

MATMAT工具全称为Memory Analyzer Tool,一款详细分析Java堆内存的工具,该工具非常强大,为了使用该工具,我们需要hprof文件.HPROF文件存储的是特定时间点,java进程的内存快照。有不同的格式来存储这些数据,总的来说包含了快照被触发时java对象和类在heap中的情况。由于快照只是一瞬间的事情,所以heap dump中无法包含一个对象在何时、何地(哪个方...

2019-06-24 21:12:47 1627

转载 Android辅助功能---全局手势放大

  在Android的辅助功能中,存在一个点击三次屏幕触发屏幕放大功能。辅助功能中打开放大后效果这个功能的使用频率实在是低...但是为什么会想记录一下这个功能的实现原理。第一,在处理性能问题的时候遇到了相关代码;其次其实现的原理还是具有部分启发性质的。主要还是研究启发部分:1、如何实现手势拦截2、全局放大的原理(主要在system_server中存在双编舞者协作...

2018-11-27 22:03:38 1678 2

转载 Android辅助功能

  1、前言Android的辅助功能是个比较老的API(since API 4),但是该API真正的开始发展还是在API 16~19(很多常用的方法参数都是在这几个版本逐渐加入以及完善的)版本中。辅助功能我们最常见的是在类似深度休眠,抢红包中使用,模拟点击屏幕view。此次写关于辅助功能的分享是因为在API 24、 API 26中,又增添了几个类以及几个接口。本文首先介绍关...

2018-11-27 21:57:44 2024

转载 快速敲log

1.设置静态常量TAG输入“logt”,然后单击回车,自动生成静态常量TAG2.输入对应的logx语句,生成相对应的log语句具体实现看下面代码:public class MainActivity extends AppCompatActivity { //1.输入“logt”,设置静态常量TAG private static final String TAG =...

2018-09-27 14:44:03 307

原创 双屏 截图 方案

int displayId = DisplayUtils.getInstance(mContext).getFocusedDisplayIdByReflect();IBinder displayToken = SurfaceControl.getBuiltInDisplay(DisplayUtils.getInstance(mContext).getPhysicalId(displayId))...

2018-09-17 16:04:36 2542

转载 Android开发学习之View测量的内置常用方法

 measureChildWithMargins代码如下  protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) { fin...

2018-08-21 15:56:05 410

转载 Gradle实战-配置环境变量

   开篇介绍 一下载Gradle Gradle官方下载地址 Gradle百度云下载地址 二配置环境变量 配置要求 配置GRADLE_HOME 配置Path 测试配置 反馈与建议  (开篇介绍)Gradle 是一款构建工具,是继 Ant 、Maven 之后的现代构建工具,我会在接下来的...

2018-07-21 11:57:34 706

原创 申请最新的原生android beta版本

在手机端和网页端登录google账号https://www.google.com/android/beta网页上会显示你满足条件的设备,选择加入手机上检测更新,即可

2018-06-01 18:45:39 2091

原创 原生机器 刷机教程

下载路径: https://developers.google.com/android/images

2018-06-01 18:34:23 6396

转载 Android 属性动画:这是一篇很详细的 属性动画 总结&攻略

前言动画的使用 是 Android 开发中常用的知识本文将详细介绍 Android 动画中 属性动画的原理 & 使用动画类型关于Android动画的系列文章动画的使用,请参考文章:Android 属性动画:这是一篇很详细的 属性动画 总结&攻略Android 动画:手把手教你使用 补间动画Android 逐帧动画:关于 逐帧动画 的使用都在这里了!Android 动画:你真的会使用...

2018-05-29 09:30:13 446

转载 探究android:largeHeap

在日常的Android开发中,我们必然遇到过OutOfMemoryError这样的崩溃,产生的原因无外乎两点,一是内存过小不够用,二是程序设计有误,导致不能释放内存,其中后者情况较多。在解决这个问题时,我们亦或多或少听到android:largeHeap,然而这个概念又是什么呢,它该如何使用,存在哪些问题呢。本文讲比较全面介绍Android中的largeHeap帮助各位全面深入了解这个概念。磨刀不...

2018-05-10 10:14:18 342

转载 Android安全开发之Provider组件安全

  1 Content Provider组件简介  ContentProvider组件是Android应用的重要组件之一,管理对数据的访问,主要用于不同的应用程序之间实现数据共享的功能。Content Provider的数据源不止包括SQLite数据库,还可以是文件数据。通过将数据储存层和应用层分离,Content Provider为各种数据源提供了一个通用的接口。  创建一个自己的Content...

2018-05-08 15:24:13 1188

转载 加密算法

RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。RSA的加密过程可以使用一个通式来表达密文=明文EmodN密文=明文EmodN也就是说RSA加密是对明文的E次方后...

2018-05-05 10:38:13 283

转载 Android签名机制之---签名过程详解

一、前言又是过了好长时间,没写文章的双手都有点难受了。今天是圣诞节,还是得上班。因为前几天有一个之前的同事,在申请微信SDK的时候,遇到签名的问题,问了我一下,结果把我难倒了。。我说Android中的签名大家都会熟悉的,就是为了安全,不让别人修改你的apk,但是我们真正的有了解多少呢?所以准备两篇文章好好介绍一下Android中签名机制。在说道Android签名之前,我们需要了解的几个知识点1、数...

2018-05-03 11:41:16 236

转载 带你彻底理解RSA算法原理

1. 什么是RSARSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。2. RSA加密RSA的加密过程可以使用一个通式来表达密文=明文EmodN密文=明文EmodN也...

2018-05-03 09:57:20 13085 1

转载 常用的加密算法

一。摘要算法    1》MD5算法(Message Digest Algorithm 5) 可以保证数据传输完整性和一致性 摘要后长度为16字节 摘要信息中不包含原文信息所有加密结果不可逆(无法解密) 一般在传送文件时 对源文件进行md5 hash 传送到对方后 检测hash值是否相等 如果相等文件传输正确如果不相等 说明文件被篡改(加入木马)或者未传送完成    其他MD算法 MD2(16字节)...

2018-04-27 10:25:12 643

转载 Android:最全面的 Webview 详解

前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用用法。目录1. 简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4....

2018-04-27 10:01:43 247

转载 View的绘制流程分析之四 -- draw

draw - 绘制将View绘制在屏幕上!在ViewRootImpl.java的函数performTravesals() 方法体最后,就开始了绘制流程!if (!cancelDraw && !newSurface) { if (mPendingTransitions != null && mPendingTransitions.size() >

2018-01-10 09:26:43 348

转载 View的绘制流程分析之三 -- layout

layout - 布局确定View的最终宽高以及四个顶点的位置!接着上一篇 View的绘制流程分析之二 – measure 往下分析layout过程!在ViewRootImpl 中的performTraversals() 函数内部,执行performMeasure() 完毕之后,// Ask host how big it wants to beperform

2018-01-10 09:24:51 280

转载 View的绘制流程分析之二 -- measure

measure - 测量确定View的测量宽高上面说到 performTraversals() 函数的时候,内部调用了 performMeasure()private void performMeasure(int childWidthMeasureSpec, int childHeightMeasureSpec) { Trace.traceBegin(

2018-01-10 09:18:58 289

转载 View的绘制流程分析之二-Android对Window对象的管理机制分析

关于Window对象管理的相关类:ViewManagerWindowManagerWindowManagerImplWindowManagerGlobalViewParentViewRootImplActvityThreadWindowManagerServiceWindow是一

2018-01-10 09:16:40 366

转载 Android 音频焦点(Audio Focus)

CONTENTS引子音频焦点一个简单的示例注意:引子说 Audio Focus 前先说个很简单需求:来电时暂停正在播放的音乐,电话结束时恢复播放。看到这个需求,第一反应肯定是:监听用户来电状态,作相应操作。这里不多做介绍,这样做有个不好的地方就是需要隐私权限!这样做一点也不优雅。后来搜索时看到一篇分析文章:Android来电时停止音乐播放的流程(顺便说一

2018-01-05 09:34:15 1301

空空如也

空空如也

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

TA关注的人

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