android
文章平均质量分 53
co_Re
Android 程序员
展开
-
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 · 899 阅读 · 0 评论 -
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 · 481 阅读 · 0 评论 -
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 · 1117 阅读 · 0 评论 -
rxjava 线程调度法则
rxjava 线程调度法则:1、observeOn() 此方法后所有操作符都运行在当前线程,直到遇到下一个observeOn为止。2、subscribeOn() 在observeOn方法之前与之后的操作符都运行在此线程。之后是指遇到observeOn为止。3、subscribeOn() 出现多次时,以第一个subscribeOn 方法设置的线程为准。...原创 2020-12-22 14:36:40 · 121 阅读 · 0 评论 -
Android全量埋点实践
一、项目背景产品又提了一堆埋点需求,有简单的,如点击的。有复杂的,如统计页面A到页面B再到页面C的。有的还是接口相关的,本来以为后台能埋点的(我都调后台接口了,不能后台埋吗?),因为无法解释的原因,最终还是app端埋。部分点位如下:虽然之前通过 Tracker框架 可以实现长路径的埋点,但因为点位太多了,业务层写的也烦,所以就想着必须得做全量埋点。解放双手,让产品不用再找我们了。全量埋点大致框架图:1、Tracker负责全局事件监听,但不做任何逻辑,由上层实现2、Apt 注解处理器,用于在编原创 2020-12-14 11:47:42 · 1020 阅读 · 0 评论 -
Bitmap 内存优化
目录Bitmap 内存计算Bitmap到底占用多大的内存单个像素的字节大小欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表F...原创 2019-12-19 00:55:23 · 681 阅读 · 0 评论 -
一、http 理论基础
本次分享是的okHttp的源码分析,说起okhttp,相信大家都会用了,可以说是现在java与android最流行的网络框架库,而在一些面试过程中,面试官也总是喜欢问http,tcp,udp协议之类。再问是否了解过okhttp,内部实现什么的,而身为android开发者,我们是属于应用层开发,对http底层协议了解也是有必要的。这是背景。本次文章分为两个部分,一是讲下http理论基础,二部分才是分...原创 2019-07-19 19:07:45 · 374 阅读 · 0 评论 -
Android 录像添加时间戳水印
最近项目中需要后台录像并添加时间戳,就类似监控视频,直接放效果图了,demo界面功能如图:跑的时候注意自己到设置加相机权限 这个demo主要做到了两点,一、添加时间戳水印。二、暂停,继续录像。github地址。视频录制目录: /sdcard/yuvVideo/,请手动在设置加相机和存储权限。首先这个demo是没有录制声音的,如果需要录制声音,参考其它文章。录...原创 2018-12-21 20:04:34 · 17062 阅读 · 50 评论 -
Android 监听主进程被杀
当按多任务键时,然后清除所有程序或者杀死单个程序时,如果要监听这个动作的话,可以在一个service里监听。效果如下:可以看到,在多任务窗口中,左滑结束进程和清除所有进程后,都会自己再打开应用,代码如下:public class KeepLifeService extends Service { private static final String TAG="Keep...原创 2018-11-05 14:14:55 · 29744 阅读 · 10 评论 -
Android P2P 通信方案探索
最近研究起了P2P网络,p2p网络其它很早就有了,但是用到的地方不多,以前最多用来p2p种子下载音乐视频这类的应用,对它的原理也一知半解,以p2p下载视频为例,大概原理:服务器里并不保存视频资源,只是保存哪些用户客户端里有此视频,相当于索引,用户A下载视频a,从服务器查询到对应的用户端B有此视频,然后让用户A和用户B建立连接,这样A就是直接从B下载了,减轻了服务器压力,而且A还可以同时从多个有此资...原创 2018-08-10 16:27:26 · 14959 阅读 · 11 评论 -
Handler源码原理分析
Android 系统内部是消息机制,什么意思? 说说Handler运行机制?Handler功能定义:各线程互相通讯用的。常用子线程在做完某事之后然后去更新UI之类。当然两个子线程也能用Handler相互通讯。本文主要分析两个线程是怎么通信的?通过源码分析原理是什么?子与主线程通讯用法: Handler mHandler = new Handler(){ @Override原创 2017-11-19 23:52:07 · 475 阅读 · 0 评论 -
Android-自己动手写ButterKnife与原理解析
相信大家都对EditText editText= (EditText) findViewById(R.id.edit_text); 这种代码非常熟悉,一个Activity里写个initView()方法,然后里面全是这种findViewById操作,相信大家也都写的烦了吧!正所谓不知道偷懒的程序员不是好程序员,这不,针对这种问题,国外大神已经研究出了Butter原创 2016-08-23 22:45:47 · 487 阅读 · 0 评论 -
android Model对象转换方法,两个实体类对象赋值简便方法
在android 应用开发中,经常是要处理服务接口返回的数据的,因此会将服务器数据(一般为json)转换为Model对象模型,但是有时候会有把一个model的属性值赋值给另一个model属性值的情况,例如一个模块或者方法只要求你传一种对象,其它类型的对象我不要(单一模式),但是你的数据不是要传对象的类型,两个model不是同一个对象类型,但是大多数属性名相同,如属性id等。所以就要有赋值转换了,如原创 2016-05-11 22:44:31 · 12022 阅读 · 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 · 7988 阅读 · 0 评论