ConstraintLayout https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayoutA ConstraintLayout is a ViewGroup which allows you to position and size widgets in a flexible way. 2018年08月09日 #Android
Android hook--示例 Hook过程: 寻找 Hook 点,原则是静态变量或者单例对象,尽量 Hook public 的对象和方法。Hook的选择点:静态变量和单例,因为一旦创建对象,它们不容易变化,非常容易定位。 选择合适的代理方式,如果是接口可以用动态代理。 偷梁换柱——用代理对象替换原始对象。注意Android 的 API 版本比较多,方法和类可能不一样,所以要做好 API 的兼容工作。还有不要hook太底层的东 2018年08月06日 #Android
Android hook--反射基础 假如你已经非常熟悉java中反射(reflect)和代理(Proxy),那你还在这里看我这篇文章纯粹就是浪费时间了。 2018年08月06日 #Android #Java
Toast显示过程 抄书抄的有点烦,自己也学着分析一下源码,挑了个在我看来比较简单的Toast显示过程来玩一玩。 1Toast.makeText(context, text, duration).show(); 先了解一下makeText过程,该过程最终都会调用下面的方法: 1234567891011121314151617181920/** * Make a standard toast to displa 2018年08月03日 #Android
Android ContentProvider 《Android开发艺术探索》9.5章 系统预置了许多ContentProvider,比如通讯录信息、日程表信息等,要跨进程访问这些信息,只需要通过ContentResolver的query、update、insert和delete方法即可。虽然ContentProvider的底层实现是Binder,但是它的使用过程要比AIDL简单许多,这是因为系统已经为我们做了封装,使得我们无须关心底层细节即可 2018年08月02日 #Android
AndroidService 《Android开发艺术探索》9.3章Service分为两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定态,主要用于其他组件和Service的交互。需要注意的是,Service的这两种状态是可以共存的,即Service既可以处于启动状态也可以同时处于绑定状态。通过Context的startService方法即可启动一个Service: 12Intent intent = new I 2018年08月01日 #Android
Android广播 面试APUS的时候被问到广播:面试官:聊一下广播吧。我:广播啊,四大组件之一,自己创建个类继承自BroadcastReceiver,重写onReceive()方法,需要注意的是不要在这个方法中做耗时操作。注册的话可以在AndroidManifest文件中静态注册,也可以在代码中动态注册。都做完了之后就可以调用sendBroadCast()方法发送广播了。面试官:了解广播注册过程么?我:哈~!这个没 2018年07月31日 #Android
View绘制过程 抄的《Android开发艺术探索》第四章ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和Deco 2018年07月29日 #Android
View事件分发 抄的《Android开发艺术探索》3.4.1 和 3.4.2 MotionEvent在手指接触屏幕后所产生的一系列事件中,典型的事件类型有如下几种: ACTION_DOWN——手指刚接触屏幕; ACTION_MOVE——手指在屏幕上移动; ACTION_UP——手机从屏幕上松开的一瞬间还有其他的事件可以参考MotionEvent.java类 TouchSlopTouchSlop是系统所能识别出 2018年07月29日 #Android