总结一下: 事件序列的定义:从手触摸屏幕(含)到离开屏幕(含)期间所发生的一系列交互事件.主要由ACTION_DOWN.ACTION_MOVE.ACTOIN_UP.ACTION_CANCEL等组成,其中一次事件序列中,DOWN和UP都只有最多一个,MOVE有若干个,可以为0个.定律:某个View只有将ACTION_DOWN处理(消费)掉,才会有机会处理后面的ACTION_MOVE和ACTION_UP. 定律:正常情况下,一个事件序列只能被一个View 拦截且消耗. 因为一旦一个元素拦截了某事件,…
流行的思路如下[2015-11-20更新]: 1.让Service杀不死.Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身. 2.让Service从后台变成前置.在Android 2.0以前有效,借助setForeground(true). 3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程).add android:persistent="true…
这个东西有顾名思义是碎片,和之前的Activity对应. 坑1:一般情况都会想当然的以为进程被杀掉之后,Fragment也会被回收 其实,Fragment有自己的生命周期,有自己的管理器(FragmentManager),也即:包含Fragment的进程被干掉,Fragment不一定会被回收,而是由FragmentManager来决定生死. Q:如何验证上面的说法?A:如果是一般正常的流程“打开-关闭”软件,Fragment的确被回收了.但是如果使用“腾讯手机管家”之类的内存清理工具,清理内存(…
PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复.其中mPopPm就是PopupWindow实例.java.lang.NullPointerExceptionat android.widget.PopupWindow$1.onScrollChanged if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { try { final Field fAnchor =…
总结一下: 1.Touch事件分发中只有两个主角:ViewGroup和View.ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouchEvent三个相关事件.View包含dispatchTouchEvent.onTouchEvent两个相关事件.其中ViewGroup又继承于View. 2.触摸事件由Action_Down.Action_Move.Aciton_UP组成,其中一次完整的触摸事件中,Down和Up都只有最多一个,Mov…
我们平时设置图片的时候,几乎都忘记回收老的(背景)图片,比如: TextView.setBackgroundDrawable() TextView.setBackgroundResource() ImageView.setImageDrawable() ImageView.setImageResource() ImageView.setImageBitmap() 这样造成内存浪费,积少成多,整个软件可能浪费不少内存. 如果记得优化,整个软件的内存占用会有10%~20%的下降. // 获得Imag…
try { mViewPager.postDelayed(new Runnable() { @Override public void run() { getCurrentPage().render(false); } }, 500); } catch (Exception e) { // 可忽略的异常 LogUtil.i(TAG, "====="); } 上面的写法实际上catch不到getCurrentPage().render(false)的异常,postDelayed会造成ge…
关键知识要点如下(持续更新): WindowManagerService只负责管理Window,不负责图像的绘制: SurfaceFlinger负责图像的合成:…
前言 此篇博客只讲解okhttp的拦截器功能的详细使用,如果你还不太了解okhttp可以参考我另外一篇博客 Android 开发 框架系列 OkHttp使用详解 添加Interceptor的简单例子 在 Android 开发 框架系列 OkHttp使用详解 可以了解到okhttp的基本使用,初始化OkHttpClient的时候我们可以添加拦截器,如下: // 配置一些信息进入OkHttpClient mOkHttpClient = new OkHttpClient().newBuilder()…
官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础 HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解 HenCoder Android 开发进阶:自定义 View 1-3 文字的绘制 HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助 HenCod…