- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 想自动开启手机所有权限?来试试这个库
先上代码,直接运行试试吧AutoPermission(About自动点击开启手机各种敏感权限,使用辅助功能(无障碍)实现,支持自由配置权限和操作)前情提要之前在方便聊(点击跳转)里面用到了辅助模式来自动复制微信消息,然后语音播放,今天再来发掘一下辅助功能的其他能力。其实辅助功能说白了就是模拟用户点击,在模拟用户点击的基础上,就可以做太多的事情,比如之前的抢红包插件、自动跳过广告、游戏辅助等等。不过今天要说的这个功能,可能普通用户不太喜欢,方便了开发者,因为这个功能是自动开启敏感权限(修改系统设置、悬
2020-08-25 09:37:58 1252 3
原创 消息语音播报,微信语音自动播放,有点儿意思,可以看看这个应用
我们谈谈技术,当然,主要也是给自己做的应用打打广告,谢谢大家支持,下载用用,提提意见。先上个二维码,感兴趣的现在就可以去看看:点击下载方便聊,下方二维码扫描直接下载看看这个可爱的二维码说说初衷一个月之前,朋友给我说了一个很有意思的需求: 在骑单车的时候(开车同理,反正就是手没空的场景),希望能够来了微信消息能够语音朗读出来(如果是语音就自动播放),然后啊,这时候如果带了耳机,...
2018-02-23 11:25:39 37277 5
原创 AsyncTask你真的用对了吗?
在之前的文章深入探究了Handler,《从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)》我们知道了Android的消息机制主要靠Handler来实现,但是在Handler的使用中,忽略内存泄露的问题,不管是代码量还是理解程度上都显得有点不尽人意,所以Google官方帮我们在Handler的基础上封装出了AsyncTask。
2016-08-26 16:40:44 16016
原创 从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
转载请注明出处http://blog.csdn.net/ly502541243/article/details/52062179Handler每个初学Android开发的都绕不开Handler这个“坎”,为什么说是个坎呢,首先这是Android架构的精髓之一,其次大部分人都是知其然却不知其所以然。今天看到Handler.post这个方法之后决定再去翻翻源代码梳理一下Handler的实现机制
2016-07-29 10:25:53 51650 17
原创 MVP“美”图+新闻+天气预报+Material+Rx+Retrofit+Glide+leakcanary+butterknife
SuperMvpMVP + RxJava+Retrofit+Glide+Material DesignGit链接https://github.com/liuyanggithub/SuperMvp简介一款遵循Material Design风格的新闻,美图,天气查询应用
2016-03-09 17:52:53 1690
原创 Handler异步消息与同步屏障(SyncBarrier)
前言Android的消息机制之前有一篇文章有写,里面具体讲到了Handler怎么发送和处理消息的整个过程。感兴趣的同学可以先跳转过去看看 从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)在看消息机制的时候,不管是把消息加入队列,还是取出队列,Message有个isAsynchronous()方法一直没关注,今天来看看这个方法到底是做什么的。Handler同步屏障(SyncBarrier)要理解这个方法的含义,我们要先了解一下Hand
2020-10-15 09:59:12 3560 1
原创 从Handler.postDelayed来看看Android怎么实现处理延时消息
前言Android的消息机制之前有一篇文章有写,里面具体讲到了Handler怎么发送和处理消息的整个过程。感兴趣的同学可以先跳转过去看看 从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)延时操作通常要实现延时操作有这几种方法:TimerTaskRxjavaThreadHandler这里我们主要来关注最后一种方法,使用Handler的postDelayed方法来处理延时:new Handler().postDelayed
2020-09-29 15:04:13 1276
原创 悬浮窗一个怎么够?微信新版本满足你的一心多用
在你看公众号文章的时候有没有这样的烦恼?正在看文章--->来了消息--->想退出去回--->待会儿又要重新找。这可真是要逼死人,岂不是我要看完了才退出去。所以微信在之前的版本,加入了悬浮窗功能。点击右上角或者左滑,可以将当前文章缩小为一个悬浮窗,之后在任意地方再点击就可以随时回去。不过呢,对于同时想看多个文章的我,这还有一个问题,...
2019-07-19 10:28:07 895
原创 What?EventBus的核心竟然只是这两个Map?
简单介绍一下EventBus其实EventBus大家都很熟悉了,就不过多去说它了。通常我们叫它事件总线,其实它更像是广播,观察者模式,一方发送消息多方接收。在EventBus的创建订阅过程中,最重要的就是有两个关键的Map,这两个键值对里面存储了我们定义的订阅方法和相关的类,那到底是具体是怎么操作的呢,来源码一探究竟。下面的代码基于EventBus3.1.1创建和订阅消息注册Even...
2019-04-26 11:47:22 289
原创 Retrofit2.5怎么做到网络请求的处理的?
Retrofit对请求方法的解析Retrofit对我们在接口类中定义的方法是如何转换成了请求,又如何处理响应。这一切都在它的loadServiceMethod方法中代码基于Retrofit2.5.0 ServiceMethod<?> loadServiceMethod(Method method) { ServiceMethod<?> result = ...
2019-04-08 14:19:49 291
原创 Retrofit2.5是如何解析在接口类中定义的方法?
前言Retrofit的核心在于它的create方法中使用了动态代理,在这里面主要是loadServiceMethod方法:以下代码基于Retrofit2.5.0(跟2.3.0代码存在明显不同) public <T> T create(final Class<T> service) { //省略无关代码 return (T) Proxy.newPr...
2019-04-03 16:14:14 398
原创 Retrofit是如何创建的?为什么要用动态代理
Retrofit的出现让Android的网络请求变得异常简单,同时可以很好的配合后台的REST接口。非常值得我们去探究一下它的原理。Retrofit的使用通常我们是Retrofit是和Rxjava配合使用,这里我们不做用法上的过多研究,主要看原理,所以下面的代码都是Retrofit的自身API,没有用Rxjava。下面是一个普通get请求1.新建接口新建接口API.java文件:p...
2019-04-02 09:52:18 857
原创 一个线程可以有几个Looper?几个Handler?从Looper.prepare()来看看关于Looper的一些问题
前言之前我有篇文章里面写到了Android的消息机制,Handler发送消息的一些原理。链接如下:从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)在消息机制里面,有一个非常重要的东西,那就是Looper,Looper的作用主要是从消息队列里面取出消息交给Handler处理,不过不仅限于此,在这里面还有很多东西值得我们去...
2019-02-18 11:06:14 11044 9
原创 解决RecyclerView在ScrollView中会置顶它上面的控件
通常情况下,需要在RecyclerView上加布局可以通过自己定义adapter然后add header来添加。但是也还有一种方法来实现,那就是用ScrollView来嵌套,比如这样的代码:<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"...
2019-02-14 10:56:14 565
原创 底部Tab+FrameLayout嵌套CoordinatorLayout+Viewpager切换时布局错乱
顶部伸缩效果现在要实现这么一个效果,有一个标题栏(或者其他控件),下面是tablayout+viewpager,然后在viewpager里面的内容滑动的时候tab悬浮,有点像微博热搜的界面####向下滑动之前####向下滑动之后CoordinatorLayout实现头部布局滑动时隐藏在5.0之后,Google推出了一系列md控件,其中用的最多的就是CoordinatorLayout,...
2019-01-19 15:54:41 2267 3
原创 OkHttp3.9拦截器原理与区别
接上回传送门上回我们讲到,OkHttp的请求过程中有个非常重要的东西-“拦截器”,而且拦截器又分为interceptors和networkInterceptors两种,那它们具体有何区别呢?又要怎么来使用?现在来一探究竟拦截器工作原理在弄清楚区别之前,要先知道他们工作的原理,还是来到RealCall.execute方法里面的getResponseWithInterceptorChain...
2018-05-21 10:37:46 958
原创 OkHttp3.9请求过程源码解析
首先来看看OkHttp的基础创建一个普通的同步get请求代码如下:OkHttpClient client = new OkHttpClient();//1String run(String url) throws IOException { Request request = new Request.Builder().url(url).build();//2 Respons...
2018-05-10 18:03:46 499 2
原创 解锁Android点击事件分发机制
开头说说初衷网上关于点击事件分发的文章一搜一大堆,标题一看,不是“30分钟让你弄明白XXX”就是“这是讲解XXX最好的文章”,满怀憧憬与信心,忍不住兴奋的点进去一看,发现不是代码就全是图,我基本上看完了所有相关的文章,结果硬是看了三个小时也没搞懂。所以最后还是决定自己去试一试,看一看点击事件分发到底是怎么个流程
2017-12-19 15:06:43 1249
原创 【开源项目】Material Design的MVP图片裁剪视频选择器
SuperSelector项目地址基于MVP的图片视频选择器+Material+Glide+leakcanary+butterknife简介一款遵循Material Design风格的图片视频选择器 - MVP模式,基于API25(7.1.1)开发,加入动态权限 - 使用RecycleView展示Grid列表 - 支持选择后预览,选择一张图片时可以裁剪 - leakcanary简单引入 -
2017-06-30 14:42:02 970
原创 从源码来看ItemTouchHelper实现RecyclerView列表的拖拽和侧滑
RecyclerView是一个用来替换之前的ListView和GridView的控件,使用的时候,虽然比以前的ListView看起来麻烦,但是其实作为一个高度解耦的控件,复杂一点点换来极大的灵活性,丰富的可操作性,何乐而不为呢。不过今天主要说说它的一个辅助类ItemTouchHelper来实现列表的拖动和滑动删除。
2017-05-12 11:35:04 1541
原创 Activity界面的加载和绘制
初探窗口在知道Activity的生命周期调用时机之后,这些都太抽象了,到底我们看到的界面是怎么加载出来的才是最感兴趣的,这里面就主要涉及Activity的Window对象了,具体是什么机制呢?
2016-11-22 16:33:33 2011
原创 Android Activity启动流程源码全解析(1)
前言Activity是Android四大组件的老大,我们对它的生命周期方法调用顺序都烂熟于心了,可是这些生命周期方法到底是怎么调用的呢?在启动它的时候会用到startActivty这个方法,但是这个方法的背后是怎样来实现的呢,来看看源码一探究竟(API23,无关代码省略)
2016-10-21 14:49:13 1267
原创 Android应用进程启动流程(Zygote进程与SystemServer进程)
Android系统是基于Linux的,所以它的所有应用也是基于Linux的Init进程创建出来的,首先Init进程启动Zygote(受精卵)进程,然后再fork出其他进程(包括SystemServer),最后开启各种应用进程。
2016-09-23 16:38:34 2083 1
原创 梳理Android的IPC进程间通信(最新AndroidStudio的AIDL操作)
前言前面梳理了Android的线程间的通信《Thread、Handler和HandlerThread关系何在?》,这些都是在同一个进程中,那进程间的通信,或者说不同的应用间的通信该如何实现呢?这个时候就要用到AIDL(*Android Interface Definition Language*Android接口定义语言 )。使用方法(AndroidStudio)我发现现在AIDL的教程基本上还是e
2016-09-12 16:33:22 949
原创 Thread、Handler和HandlerThread关系何在?
前言前几天看到一道面试题:Thread、Handler和HandlerThread有什么区别?,这个题目有点意思,对于很多人来说,可能对Thread和Handler很熟悉,主要涉及到Android的消息机制(Handler、Message、Looper、MessageQueue)
2016-09-02 15:56:13 9718 2
原创 深入探究getApplicationContext和getApplication是不是返回同一个对象?
前言在上篇文章从getApplicationContext和getApplication再次梳理Android的Application正确用法中,我提到 但是我们知道了mApplication和context是两个不同的东西,所以严格意义上来说getApplicationContext和getApplication是不一样的,虽然很多时候他们返回的都是同一个对象
2016-08-05 12:04:48 4072 1
原创 从getApplicationContext和getApplication再次梳理Android的Application正确用法
Context在Android开发的时候,很多地方我们都会用上Context这个东西,比如我们最常用的startActivity,以前也没怎么在意这个到底有什么用,方法要参数就直接传过去,今天看到getApplicationContext和getApplication有点懵逼,我觉得有必要去一探究竟了,首先看看什么是Context:Context,翻译为上下文,环境。
2016-08-03 17:13:51 5595 6
原创 分析android或java项目流程
这里的学习分为快速掌握和全部项目分析,开源项目 Android 一般分为完整项目(App)和工具库,分析的话可概括为总分总:1 总 —- 功能了解了解项目功能(Sample 和文档)以及主要分为几个大块。另外明白你的需求,比如 PullToRefresh 的下拉实现 。 PS:(1)大家可以自己先想想如果是自己会怎么去实现这个项目,或许看源码过程中会发现思想碰撞。 (2)如果时间比较紧,可以
2015-05-28 11:49:47 993
转载 Android 混淆代码总结
为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过来 2. 最重要的就是在proguard-project.txt添加混淆的申明了: a. 把所有你的jar包都申明进来,例如:
2015-05-27 23:40:54 1507
原创 VIM编辑器的基本概念与使用
1、vi的基本概念基本上vi可以分为三种状态,分别是命令模式(command mode)插入模式(Insert mode)底行模式(last line mode)1) 命令行模式command mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。2) 插入模式(Insert mode)只有在Insert mod
2015-05-27 23:31:56 789
java开发常用jar包
2014-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人