自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android Java 监听jvm Gc 事件

有时候会需要监听虚拟机的 的gc 事件。直接上源码了。使用如下:GcWatcherInternal.addGcWatcher(new Runnable() { @Override public void run() { System.out.println("gc 事件"); } });源码如下:package com.ttp.newcore.apm;import android.os.SystemClock;import ja

2021-06-16 14:19:55 972

原创 app_process运行java 程序

1、编译成classjavac ./com/wzh/pswcrack/LockTest.java2、编译成dex多class 用空格隔开/Users/wzh/Library/Android/sdk/build-tools/29.0.3/dx --dex --output=./LockTest.dex ./com/wzh/pswcrack/LockTest.class ./com/wzh/pswcrack/Reflect.class ./com/wzh/pswcrack/Reflect\$1.cla

2021-04-15 11:45:06 550

原创 Android Tracker 原理

想像一下,你的app有没有这种的埋点,同时有activity A、B、C、D,需要分别统计A->D(A跳转到D),B->D、C->D 的点,这种情况下,如果用普通实现可能就是在D 页面通过intent取出来源是A或B或C 来做埋点。这种两个页面以上组合起来称为一条路径 track. 还有更长的,如A->B,然后页面B的某按钮点击,再进页面C …… 等等,如果用intent传值方式需要把来源一路往下传,非常麻烦,而且让其他人在看代码的时候,往往不懂这个值是干嘛的,代码不清晰,所以 tr

2021-01-19 17:38:31 1236

原创 Android 增量代码测试覆盖率工具实践

当业务快速发展,新业务不断出现,开发同学粗心的情况下,难免会出现少测漏测的情况,如何保证新增代码有足够的测试覆盖率?当一段正常的代码,开发却修改了,测试人员没有测试其功能,如果保证能够发现?所以代码覆盖测试是有必要的,代码覆盖只能保证这行代码执行了,不能保证其是否正确。寻找相关工具,发现最接近的是jacoco。jacoco 接入也比较简单,在安卓上用的offline 模式,不过jacoco 默认是全部插入探针代码,所以需要对其改造,只对增量代码插入探针。大致流程需求开发流程:项目管理是git,mast

2021-01-19 16:43:43 4290 29

原创 rxjava 线程调度法则

rxjava 线程调度法则:1、observeOn() 此方法后所有操作符都运行在当前线程,直到遇到下一个observeOn为止。2、subscribeOn() 在observeOn方法之前与之后的操作符都运行在此线程。之后是指遇到observeOn为止。3、subscribeOn() 出现多次时,以第一个subscribeOn 方法设置的线程为准。...

2020-12-22 14:36:40 151

原创 下载github 文件夹

下载github 文件夹:1、点击目录,复制地址,如 https://github.com/AleynP/LPR/tree/master/app/src/main/assets/lpr2、把/tree/xxx/ 改成 trunk,得到新地址:https://github.com/AleynP/LPR/trunk/app/src/main/assets/lpr3、使用 svn checkout https://github.com/AleynP/LPR/trunk/app/src/main/assets

2020-12-22 10:18:01 274

原创 Android全量埋点实践

一、项目背景产品又提了一堆埋点需求,有简单的,如点击的。有复杂的,如统计页面A到页面B再到页面C的。有的还是接口相关的,本来以为后台能埋点的(我都调后台接口了,不能后台埋吗?),因为无法解释的原因,最终还是app端埋。部分点位如下:虽然之前通过 Tracker框架 可以实现长路径的埋点,但因为点位太多了,业务层写的也烦,所以就想着必须得做全量埋点。解放双手,让产品不用再找我们了。全量埋点大致框架图:1、Tracker负责全局事件监听,但不做任何逻辑,由上层实现2、Apt 注解处理器,用于在编

2020-12-14 11:47:42 1083

原创 Bitmap 内存优化

目录Bitmap 内存计算Bitmap到底占用多大的内存单个像素的字节大小欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表F...

2019-12-19 00:55:23 781

原创 二、基于Socket创建一个Http请求

本篇文章是okhttp介绍的第二篇,如要复习http理论基础知识,参:一、http 理论基础本篇主要是okhttp主要部分源码与逻辑。基于socket创建一个http首先通过上篇的文章,我们了解了tcp与http协议,而在java中,如果我们要创建一个tcp连接,则可以使用Socket(套接字),socket 是java为我们创建与建立tcp连接而提供的一套api,注:(创建udp则是Dat...

2019-07-25 00:22:28 819

翻译 Java网络:协议设计 Protocol Design

本文翻译转载:原文Java网络:协议设计如果您正在设计客户端 - 服务器系统,则可能还必须在客户端和服务器之间设计通信协议。当然,这个协议已有现成为你选择,例如HTTP,XML-RPC(基于HTTP的XML)或SOAP(也是基于HTTP的XML)。但是协议是可以自定义的,所以让我们看一下在设计 客户端-服务器协议 时可能想要考虑的一些问题 - 客户端 - 服务器往返 划分请求和响应...

2019-07-23 12:07:05 402

原创 一、http 理论基础

本次分享是的okHttp的源码分析,说起okhttp,相信大家都会用了,可以说是现在java与android最流行的网络框架库,而在一些面试过程中,面试官也总是喜欢问http,tcp,udp协议之类。再问是否了解过okhttp,内部实现什么的,而身为android开发者,我们是属于应用层开发,对http底层协议了解也是有必要的。这是背景。本次文章分为两个部分,一是讲下http理论基础,二部分才是分...

2019-07-19 19:07:45 404

原创 Android 录像添加时间戳水印

最近项目中需要后台录像并添加时间戳,就类似监控视频,直接放效果图了,demo界面功能如图:跑的时候注意自己到设置加相机权限 这个demo主要做到了两点,一、添加时间戳水印。二、暂停,继续录像。github地址。视频录制目录: /sdcard/yuvVideo/,请手动在设置加相机和存储权限。首先这个demo是没有录制声音的,如果需要录制声音,参考其它文章。录...

2018-12-21 20:04:34 17888 50

原创 Android 监听主进程被杀

当按多任务键时,然后清除所有程序或者杀死单个程序时,如果要监听这个动作的话,可以在一个service里监听。效果如下:可以看到,在多任务窗口中,左滑结束进程和清除所有进程后,都会自己再打开应用,代码如下:public class KeepLifeService extends Service { private static final String TAG="Keep...

2018-11-05 14:14:55 30654 10

原创 Android P2P 通信方案探索

最近研究起了P2P网络,p2p网络其它很早就有了,但是用到的地方不多,以前最多用来p2p种子下载音乐视频这类的应用,对它的原理也一知半解,以p2p下载视频为例,大概原理:服务器里并不保存视频资源,只是保存哪些用户客户端里有此视频,相当于索引,用户A下载视频a,从服务器查询到对应的用户端B有此视频,然后让用户A和用户B建立连接,这样A就是直接从B下载了,减轻了服务器压力,而且A还可以同时从多个有此资...

2018-08-10 16:27:26 15279 11

原创 pico i.MX7 Dual (I.MX7D)刷入AndroidThings

刚参加完Google developer Days 2017上海站回来,了解了Android Things和lot开发,Android Things可理解为简易Android 系统。我们可以直接用android开发应用,以apk安装的形式运行,方便开发者开发。不过删剪了很多库,主要用来控制其它硬件的系统。也幸运的获得了一块开发板“pico pro maker kit”,型号:i.Mx 7 Dual,

2017-12-14 19:42:18 4374 6

原创 Handler源码原理分析

Android 系统内部是消息机制,什么意思? 说说Handler运行机制?Handler功能定义:各线程互相通讯用的。常用子线程在做完某事之后然后去更新UI之类。当然两个子线程也能用Handler相互通讯。本文主要分析两个线程是怎么通信的?通过源码分析原理是什么?子与主线程通讯用法: Handler mHandler = new Handler(){ @Override

2017-11-19 23:52:07 552

原创 Android-自己动手写ButterKnife与原理解析

相信大家都对EditText editText= (EditText) findViewById(R.id.edit_text); 这种代码非常熟悉,一个Activity里写个initView()方法,然后里面全是这种findViewById操作,相信大家也都写的烦了吧!正所谓不知道偷懒的程序员不是好程序员,这不,针对这种问题,国外大神已经研究出了Butter

2016-08-23 22:45:47 518

原创 android Model对象转换方法,两个实体类对象赋值简便方法

在android 应用开发中,经常是要处理服务接口返回的数据的,因此会将服务器数据(一般为json)转换为Model对象模型,但是有时候会有把一个model的属性值赋值给另一个model属性值的情况,例如一个模块或者方法只要求你传一种对象,其它类型的对象我不要(单一模式),但是你的数据不是要传对象的类型,两个model不是同一个对象类型,但是大多数属性名相同,如属性id等。所以就要有赋值转换了,如

2016-05-11 22:44:31 12121 2

原创 Canvas drawCircle Rect边框问题

Canvas 画圆注意事项@Overrideprotected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint_blue=new Paint(); paint_blue.setColor(Color.BLUE);

2015-04-15 16:43:14 8083

android-things-setup-utility包括各win,mac,linux

官方刷入androidThings 的引导工具,内不包括系统镜像。 教程见:https://editor.csdn.net/md/?articleId=78806346

2017-12-14

空空如也

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

TA关注的人

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