![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 81
doom20082004
这个作者很懒,什么都没留下…
展开
-
各种启动过程 通过Launcher启动MainActivity的过程
参考罗升阳《Android系统源代码情景分析(修订版)》一、Zygote的启动过程Zygote是由Android系统的第一个进程init启动起来的,init是内核在加载完成之后就启动起来的;Zygote进程通过复制自身的方式创建System进程和应用程序进程,同时复制虚拟机实例;通过init.rc来启动,并创建一个名称为zygote的socket,便于各种服务与之通信;原创 2016-12-02 15:48:31 · 1831 阅读 · 0 评论 -
《Android开发艺术探索》第九章四大组件的工作过程小结
1. 运行状态1)除了BroadcastReceiver以外,其他三种必须在AndroidManifest中注册,ContentProvider的调用不需要Intent;2)Activity通过显示或者隐式Intent启动,有四种启动模式,通过finish方法结束,主要作用是展示界面和用户交互;3)Service用于在后台执行计算任务,有启动和绑定两种状态,启动状态不需要和外界交互,后原创 2016-12-07 11:11:27 · 266 阅读 · 0 评论 -
《Android开发艺术探索》第四章View的工作原理小结
1. 外部拦截法:重写父容器的onInterceptTouchEvent,在ACTION_MOVE中根据滑动方向判断是否需要由父容器拦截;2. 内部拦截法:父容器不拦截任何事件,如果子元素需要此事件就消耗掉,否则设置为让父元素消耗;重写子元素的dispatchTouchEvent方法,在ACTION_DOWN中设置requestDisallowInterceptTouchEvent(tru原创 2016-12-06 15:33:59 · 229 阅读 · 0 评论 -
《Android开发艺术探索》第八章Window和WindowManager小结
1. 概述Window是一个抽象类,具体实现是PhoneWindow,通过WindowManager创建。Window的具体实现位于WMS中,WindowManager和WMS是IPC交互过程。通过mWindowManager.addView(view, layoutParams);添加一个Window。Window有三种类型,应用Window(对应Activity),子Window(原创 2016-12-06 21:55:05 · 415 阅读 · 0 评论 -
Android开发艺术探索》综合技术,JNI和性能优化小结
1. 当crash发生时,系统就会调用UncaughtExceptionHandler的uncaughtException方法,可以读取到异常信息;实现UncaughtExceptionHandler接口,在uncaughtException(Thread t, Throwable ex),ex.printStackTrace(PrintWriter pw)读取异常信息;public vo原创 2016-12-08 14:04:53 · 708 阅读 · 0 评论 -
GUI系统总结
GUI系统之SurfaceFlinger一、整体架构1. Linux内核提供了framebuffer的显示驱动,fb0表示第一个显示屏;2. Android的HAL层提供了Gralloc,包括fb和gralloc两个设备。前者负责打开内核中的framebuffer、初始化配置、并提供了post,setSwapInterval等操作接口;后者则管理帧缓冲区的分配和释放;3. HAL层原创 2016-12-22 10:14:05 · 2137 阅读 · 0 评论 -
《Android开发艺术探索》第十二章Bitmap加载和Cache小结
1. Bitmap的高效加载1)BitmapFactory提供了decodeFile(decodeFileDescriptor),decodeResource,decodeStream和decodeByteArray分别用于从文件、资源、输入流以及字节数组中加载Bitmap对象;2)修改BitmapFactory.Options的inSampleSize采样率来加载所需尺寸的图片;将Bit原创 2016-12-08 10:20:43 · 391 阅读 · 0 评论 -
常见Layout的LayoutParams总结
参考:Android MarginLeft与MarginStart的区别http://blog.csdn.net/zhufuing/article/details/40181815常见Layout的LayoutParams总结http://haking.iteye.com/blog/1182334LayoutParams// <-- android.view.ViewG转载 2016-12-17 22:15:29 · 547 阅读 · 0 评论 -
Android中View,SurfaceView和GLSurfaceView绘图的区别
转载:https://zhidao.baidu.com/question/626501648785925724.html Android游戏开发中常用的三种视图是:View、SurfaceView和GLSurfaceView,区别如下: View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢,用于被动更新画面。转载 2016-12-24 16:03:13 · 2517 阅读 · 0 评论 -
《Android开发艺术探索》第一章Activity的生命周期和启动方式小节
第一章 Activity的生命周期和启动模式1. onCreate:setContentView加载布局资源onRestart,onStart,onResume,onPause,onStop,onDestroyonStart和onStop表示Activity是否可见,onResume和onPause表示Activity是否位于前台2. 异常情况下生命周期资源相关系统配原创 2016-12-05 16:59:07 · 223 阅读 · 0 评论 -
onWindowFocusChanged重要作用
http://www.cnblogs.com/lijunamneg/archive/2013/01/19/2867532.htmlActivity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。译注:从onWindowFocusChang转载 2016-11-27 19:55:37 · 181 阅读 · 0 评论 -
ThreadLocal和同步异步的解释
1. ThreadLocal不是用来解决对象共享访问问题的,而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式。归纳了两点: a. 每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。 b. 将一个共用的ThreadLocal静态实例作为key,将不同对象的引用保存到不同线程的ThreadLoca转载 2016-12-13 18:34:34 · 1113 阅读 · 0 评论 -
ANR初步探讨
ANR(Application Not Responding)定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因转载 2016-12-12 11:40:26 · 201 阅读 · 0 评论 -
Android消息机制的疑难点说明
参考:http://blog.csdn.net/chwan_gogogo/article/details/46953575 Java层http://blog.csdn.net/chwan_gogogo/article/details/46953563 专讲C层文件描述符http://blog.csdn.net/chwan_gogogo/article/details/46953549原创 2016-12-12 22:58:11 · 409 阅读 · 0 评论 -
GestureDetector分析
public class GestureDetector { public interface OnGestureListener { //单纯的手指按下时触发 boolean onDown(MotionEvent e); //按下一段时间TAP_TIMEOUT后触发,用来给出提示,不影响之后单击的判定 void onSho原创 2016-12-15 14:42:14 · 280 阅读 · 0 评论 -
SparseArray分析
SparseArray是android里为 这样的Hashmap而专门写的类,目的是提高效率,其核心是折半查找函数(binarySearch)。满足下面两个条件我们可以使用SparseArray代替HashMap:1. 数据量不大,最好在千级以内2. key必须为int类型或者long,这中情况下的HashMap可以用SparseArray或LongSparseArray代替3原创 2016-12-14 14:47:56 · 341 阅读 · 0 评论 -
ViewGroup和View以及TouchDelegate的触摸事件源码简析
参考:浅尝安卓事件分发机制http://blog.csdn.net/zhaizu/article/details/50489398深入Android开发之--理解View#onTouchEventhttps://my.oschina.net/banxi/blog/187267?p=1Android 触摸消息处理http://blog.csdn.net/siobhan原创 2016-12-15 20:14:36 · 361 阅读 · 0 评论 -
AsyncTask分析
1. 调用AsyncTask的execute方法,实际上是传入了doInbackground执行所需的参数,内部继续调用了Executor的execute方法来执行内部定义好的FutureTask对象。而FutureTask执行的是内部定义好的WorkerRunnable对象,WorkerRunnable的call方法将外部提供的参数传递给doInBackground,直到doInBackgrou原创 2016-12-13 22:17:58 · 220 阅读 · 0 评论 -
Scroller的用法,VelocityTracker用法,以及滑动冲突的处理
参考:http://blog.csdn.net/yanghuinipurean/article/details/50419455/** * 仿微信刷新 * @author Nipuream */public class WXLayout extends LinearLayout{ private static final String TAG = "WXLayout";转载 2016-12-14 21:36:21 · 403 阅读 · 0 评论 -
《Android开发艺术探索》第二章IPC机制小结
1. 通过android:process开启新的进程进程名以“:”开头的属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中,不以冒号开头的为全局进程,其他应用可以通过ShareUID方式可以和它跑在同一个进程中。要求ShareUID相同且签名相同,可以访问对方的私有数据,如data目录、组建信息等。同一个应用的多进程,相当于两个不同的应用采用了ShareUID的模式。原创 2016-12-05 19:55:17 · 246 阅读 · 0 评论