安卓-原理分析
文章平均质量分 80
江三木洛
这个作者很懒,什么都没留下…
展开
-
安卓Handler详解
在安卓中由于主线程中不能进行耗时操作,我们往往需要另外开启一个线程来进行耗时操作,操作完成之后,我们通常需要使用Handler来将结果展现在界面中,下面我来详细说明下handler的使用。1.Handler的创建public Handler mHandler = new Handler();Handler的创建只要new 一个Handler的对象就可以了,那么新建一个对象,系统究竟做了原创 2016-10-17 17:53:03 · 338 阅读 · 0 评论 -
安卓Context介绍
Context是什么Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?在语文中,我们可以理解为语境,在程序中,我们可以理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。比如微信聊天,此时的“环境”是指聊天的界面以及相关的数据请求与传输,Context在加载资源、启动Activity、获取系统服务、创建Vie原创 2017-10-11 21:10:38 · 506 阅读 · 0 评论 -
安卓7.0 系统服务启动流程
安卓的系统服务都是由SystemServer这个进程创建的,那从他的main函数开始看看public static void main(String[] args) { new SystemServer().run(); }新建了一个SystemServer类,并调用他的run方法private void run() { ...... star原创 2017-09-20 20:40:56 · 662 阅读 · 0 评论 -
onMeasure的宽高生成解析
在View的绘制流程中,onMeasure是负责测量控件的大小的@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); }他的两个参数分别代表宽和高,接下原创 2017-08-29 21:06:17 · 975 阅读 · 0 评论 -
Activity界面的添加与删除
安卓中是由WindowManagerService来管理所有的窗口,下面来看下Activity是如何与WindowManagerService交互,控制应用界面的添加与删除的我们通常都是在onCreate方法中调用setContentView来设置布局,此时只是完成了视图树的创建,并没有通知WindowManagerService添加界面,真正添加界面是在回调完onResume完成的我们的Activ原创 2017-09-26 14:32:02 · 1650 阅读 · 0 评论 -
requestDisallowInterceptTouchEvent实现原理
我们为了让底部的控件处理事件,不被父控件拦截,一般我们会调用v.getParent().requestDisallowInterceptTouchEvent(true);来阻止父控件对事件的拦截,来看下它的实现原理。首先明确下v.getParent()对于底部的View来说,得到的就是上层的父控件,也就是上层的ViewGroup,来看下ViewGroup的requestDisallowInterce原创 2017-08-24 12:04:37 · 1420 阅读 · 0 评论 -
Activity的setContentView解析
我们一般设置Activity的界面,都是在onCreate方法中通过setContentView完成,之后就会在手机上显示我们设置的界面,现在我们走下流程,看看系统究竟是如何做的。 首先Activity是在ActivityThread中的performLaunchActivity方法中被创建的private Activity performLaunchActivity(ActivityClient原创 2017-08-16 19:46:37 · 406 阅读 · 0 评论 -
AsyncTask原理
AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask类,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程,且其是串行执行的,下面从原来上分析他是如何做的class DownloadTask extends AsyncTask<Integer, Void, String> { @Ove原创 2017-07-27 13:04:38 · 244 阅读 · 0 评论 -
AMS与Activity的交互
上面是Activity典型的生命周期流程图,基本的就不讲了,提两个问题来求解下 1:当启动一个新的Activity时,新旧两个Activity的生命周期执行顺序 2:当你在onCreat中调用startActivity或者finish的时候,生命周期执行流程首先来求解第一个问题,很简单,建立两个Activity,每个生命周期上打上log@Overrideprotected void onSta原创 2017-08-02 21:05:34 · 825 阅读 · 0 评论 -
安卓OnTouchListener,onTouchEvent,onClickListener执行顺序
安卓控件有很多监听事件,比较典型的有OnTouchListener,onTouchEvent和mOnClickListener,来看下他们的执行顺序 我们先自定义一个Button,在他的onTouchEvent方法中加入log@Override public boolean onTouchEvent(MotionEvent event) { Log.e("xw", "onT原创 2017-08-03 20:08:00 · 12823 阅读 · 0 评论 -
安卓Binder解析
Binder是Android系统进程间通信(IPC)方式之一,他的使用方法如下 先定义一个aidl文件package com.example.binderdemo;interface IBinderTest { void setName(String name); String getName();}接着我们写一个service,里面实现具体的功能public class Bin原创 2017-07-29 16:23:54 · 389 阅读 · 0 评论 -
安卓中invalidate和requestLayout的实现和区别
安卓中invalidate和requestLaoyout都是刷新View用的,用下面这张图来表示他们的流程invalidate和postInvalidate的实现两者的区别:invalidate是在主线程调用,postInvalidate在非主线程中调用。首先看postInvalidate的实现public void postInvalidate() { postInvalid原创 2017-06-28 18:47:55 · 4979 阅读 · 0 评论 -
EventBus的使用与原理
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 使用方法如下:首先在gradle中进行配置compile 'org.greenrobot:eventbus:3.0.0'新建一个消息类public原创 2017-06-30 11:41:15 · 251 阅读 · 0 评论 -
普通广播与本地广播
我们平常使用的一般都是全局广播,使用方法就不多说了,下面介绍下本地广播的使用方法注册 private MyBroadcastReceiver receiver; private IntentFilter filter; @Override protected void onCreate(Bundle savedInstanceState) { super.原创 2017-10-30 12:31:47 · 1025 阅读 · 0 评论