5 痕迹丶

尚未进行身份认证

我要认证

对代码不满足,是任何真正有天才的程序员的根本特征。

等级
TA的排名 2w+

Android 豁免所有hide灰名单调用警告,做到不弹窗,logcat不提示,隐藏代码能并反射

从 android 9.0 开始,当代码调用某些系统api的时候,会因为api的一些判定灰名单级别,不同程度的对app做出提醒,最严重的是直接弹窗提醒,次之是会在logcat打印出调用内容。具体api名单列表:https://developer.android.google.cn/about/versions/10/non-sdk-q但有些情况下我们确实要使用这些api,下面是我总结了以下几种...

2020-04-17 14:36:57

java支持优先级的线程池 同步 异步

支持设置任务的优先级来顺序的执行任务import java.util.concurrent.Callable;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;import java.util.concurrent.PriorityBlockingQueue;import java.util...

2020-04-14 19:02:09

android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android 耗时统计

在android开发的过程中,不管是开发SDK还是开发App,我们时常有这么一个需求,性能优化,或者卡顿优化,通常进行这项工作的时候,我们可能会凭着主观的一些观点,去定位排查某一部分代码,常用的手段就是在可疑代码前后加时间戳相减来手动统计,或者在运行的过程中,通过看android 自带的性能分析工具来进行优化。但这种方式难免会有疏漏,而且每段代码的执行过程也是不容易追踪的。今天就来给大家介绍一个...

2020-03-18 17:48:25

android 反射强行设置开启系统权限

发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)AppOpsManager appOpsManager = mContext.getSystemService(AppO...

2020-03-12 17:16:57

android代码保护永不闪退

在我们开发的过程中,再厉害的程序员也无法保证写的代码没有错误,而这里面最严重的错误,对于android开发来说,毫无疑问就是app闪退了.特别是在开发第三方SDK的时候,假设因为SDK里面报的问题,导致对方App崩溃了,这对SDK而言的打击是非常严重的,有的时候我们甚至希望SDK即使无法很好的工作,也不要引发对接方App的崩溃.下面我就来介绍两种,可以根据代码判断,只会代码所在线程死掉,但不会引...

2019-11-30 12:54:11

Android使用读写锁实现多进程安全的SharedPreferences

背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过Co...

2019-09-26 15:10:37

记录在使用类加载器的时候遇到的一个错误:java.lang.LinkageError

报错信息是这样的:java.lang.LinkageError: Class com.lm.process.CheckProcess method void com.lm.process.CheckProcess.observer(com.lm.bean.HhInfo, android.view.View) resolves differently in interface com.lm.pro...

2019-07-08 17:48:45

记一次java.lang.IllegalAccessError错误

java.lang.IllegalAccessError: Field 'com.lm.presenter.LmViewPresenter.view' is inaccessible to class 'com.lm.presenter.SplashPresenter' (declaration of 'com.lm.presenter.SplashPresenter' appears in /d...

2019-07-08 17:47:59

BottomSheetDialog中CardView圆角不显示及去除白边

注意两个地方CardView 需要设置android:layout_marginTop="@dimen/y70"才会显示去除白边: dialog.setContentView(view); dialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet) ...

2019-04-18 11:24:41

java 注解使用与注意事项

想拥有一个star过千的项目好难啊,费劲巴力的整出来star几天才有一个[捂脸],不过咱也不气馁,毕竟开发个东西出来对自己的技术也是个帮助不是。wandfix开发了有一段时间了,在开发和使用的过程中也发现了一些问题,特别是帮助了我学习对于java 注解的使用。今天就打算分享我在这个项目中对于注解使用。java注解在部分情况下是个可以帮助我们提升开发效率的东西,比如大名鼎鼎的控件绑定库 Butt...

2019-04-16 14:10:19

一款非常简单易用的Android热修复框架 WandFix 使用详解 附实现原理

WandFix是一个基于java ClassLoader实现的热修复框架。效果展示:优点:类似于黄油刀可以直接对成员变量添加@InjectObject(“com.example.motordex.AppParsenterImpl2”)注解,来绑定热修复包中的实现类。无需关闭应用即可使修复包生效。与mvp模式搭配使用效果最佳。可以自己定义需要热修复的类。可以自己配置dex加密算法,...

2018-12-28 17:48:36

正则表达式匹配http链接

写正则表达式,匹配以下例如:http://hello.hello.com和大海http://hello.hello.com和大海http://hello.aaa.com和大海http://hello.hello.com.cn和大海http://hello.hello.name和大海http://hello.hello.top和大海https://hello.hello.com和大海...

2018-11-26 13:52:59

[android源码日记]当系统时间小于1970年

我们知道,计算器的时间是从1970年开始的,而java获取时间的方法System.currentTimeMillis()的返回值也是从0开始的,0就代表1970年一月一日。那么这个如果值为负数会怎么样?1969年?今天在读SystemServer源码的时候看到其中run方法修复时间的一段。它是这么处理的。// If a device's clock is before 1970 (befor...

2018-10-11 18:56:25

java实现计算复杂数学表达式

用过python或者PHP的同学应该知道,它们都有个eval函数,这个函数真的是好用啊,比如我算数的时候就喜欢用python的控制台来当做计算器。比如:Python3.6.5(v3.6.5:f59c0932b4,Mar282018,17:00:18)[MSCv.190064bit(AMD64)]onwin32Type"copyright","credits"or...

2018-10-09 14:53:56

用24k纯java自己实现android的handler+message通信机制

事情的起因还是因为一次面试经历。面试官:“说一下android的handler机制。”经过几次面试之后发现几乎每个面试官都会问到这个问题,真的都快被问烦了好吧,于是用飞快的速度把之前都快说烂了答案的又说了一遍,好不容易都说完了,这时候面试官的操作来了,直接拿过来几张白纸。“恩,说的不错,来,那你试试能不能尝试用伪代码实现一下。”还有这种操作,当时我就蒙了,心想,要不就试试吧,反正都用了不知...

2018-09-21 16:56:15

android基于mvp的热修复方案构思,不使用第三方

本文为作者原创,转载请注明出处由来现在开发android项目大部分都已经由mvc转移到了mvp,关于mvp是什么大致也不必多说了,无非三个层: - m:model层,一般封装对数据的操作,增删改查,接口访问等等。 - v:view层,也就是视图层,视图层不主动做什么,只是根据某些事件作出对应的视图展示。 - p:Presenter层,也就是逻辑层。图解(之前在别的博文...

2018-08-01 18:16:19

android 3年 2018面经

从毕业之后一直在那里工作了将尽3年的公司,好好的突然就老总开员工大会告知公司资金出问题,大家都散了吧,可以说是始料未及啊。无奈,4月份,又要开始出来找工作了,在写这篇博客之前找到工作了,还算满意吧。下面就是对本次面试经历中印象比较深的几个问题做一个总结。今日头条 4月初投的简历吧,直到四月底今日头条打电话来让过去面试,hr提前提醒了面试会有算法方面的东西,预留了3天的时间让好好准备准备,...

2018-06-29 14:43:26

android View 和 ViewGroup 事件分发机制

ViewGroup的事件分发机制大体流程为: ViewGroup的dispatchTouchEvent -> ViewGroup的onInterceptTouchEvent -> 子View的dispatchTouchEvent ->子View的onTouchEvent 1. ViewGroup.dispatchTouchEvent 事件拦截 2. ViewGroup...

2018-04-26 10:57:28

android-opencv之线性滤波.实现简单图像滤镜

opencv的线性滤波可以为图像添加一些效果,比如模糊,降噪,锐化,腐蚀与膨胀等,当然我们也可以自己来定义核来实现一些特殊的效果. 核是什么?那么上面提到的核是什么呢? 核可以看做是沿着图像像素移动的一个窗口,它遍历图片的每个像素,并且将计算后的结果输出到该像素,通过这样的一个图可以更直观的理解这个概念. 核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组...

2018-03-30 15:46:38

android-opencv机器视觉库的集成部署

这段时间一直在学习opencv在android平台上的应用,因此打算把学习的过程记录下来,就当是学习笔记吧.opencv在android平台上的部署有两种方式:手机安装OpencvManager.apk,然后项目导入OpenCVSDK的Java库,使用 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, context, ...

2018-03-27 17:55:05

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。