关闭

安卓Context介绍

Context是什么Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?在语文中,我们可以理解为语境,在程序中,我们可以理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。比如微信聊天,此时的“环境”是指聊天的界面以及相关的数据请求与传输,Context在加载资源、启动Activity、获取系统服务、创建Vie...
阅读(57) 评论(0)

Activity界面的添加与删除

安卓中是由WindowManagerService来管理所有的窗口,下面来看下Activity是如何与WindowManagerService交互,控制应用界面的添加与删除的我们通常都是在onCreate方法中调用setContentView来设置布局,此时只是完成了视图树的创建,并没有通知WindowManagerService添加界面,真正添加界面是在回调完onResume完成的我们的Activ...
阅读(53) 评论(0)

Hierarchy Viewer的使用

Hierarchy Viewer工具提供了一个可视化界面显示布局的层次结构,让我们可以进行调试,从而优化界面布局结构。我们可以通过Android Device Monitor来启动启动之后在模拟器上打开相应界面,之后选择相对应的进程和Activity名称在右边的Tree View界面中就会显示出选中界面的布局结构之后选择一个节点,并点击右上角的测量图标此时就获取到了布局绘制的时间这里我们主要关注下面...
阅读(45) 评论(0)

安卓7.0 系统服务启动流程

安卓的系统服务都是由SystemServer这个进程创建的,那从他的main函数开始看看public static void main(String[] args) { new SystemServer().run(); }新建了一个SystemServer类,并调用他的run方法private void run() { ...... star...
阅读(83) 评论(0)

TraceView的使用

Traceview是android平台配备的一个性能分析工具,通过图形化的方式让我们了解程序的性能,并且能具体到method。 使用方法有两种: 1:在代码中追踪//追踪开始 Debug.startMethodTracing(); //追踪开始 Debug.stopMethodTracing();在你想开始监听的时候调用Debug.startMethodTracing();结束的时候调用Debu...
阅读(62) 评论(0)

LeakCanary的使用

LeakCanary是一个对Android和Java进行内存泄露检测的库 使用方法:首先在gradle中进行配置dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.2' releaseCompile 'com.squareup.leakcanary:leakcanary-android-...
阅读(70) 评论(0)

onMeasure的宽高生成解析

在View的绘制流程中,onMeasure是负责测量控件的大小的@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); }他的两个参数分别代表宽和高,接下...
阅读(66) 评论(0)

requestDisallowInterceptTouchEvent实现原理

我们为了让底部的控件处理事件,不被父控件拦截,一般我们会调用v.getParent().requestDisallowInterceptTouchEvent(true);来阻止父控件对事件的拦截,来看下它的实现原理。首先明确下v.getParent()对于底部的View来说,得到的就是上层的父控件,也就是上层的ViewGroup,来看下ViewGroup的requestDisallowInterce...
阅读(82) 评论(0)

Activity的setContentView解析

我们一般设置Activity的界面,都是在onCreate方法中通过setContentView完成,之后就会在手机上显示我们设置的界面,现在我们走下流程,看看系统究竟是如何做的。 首先Activity是在ActivityThread中的performLaunchActivity方法中被创建的private Activity performLaunchActivity(ActivityClient...
阅读(55) 评论(0)

安卓插件化实例

最近想研究研究安卓插件化的知识,看了看Android插件化完美实现代码觉得很好很强大,所以就来造个轮子,学习记录下。 首先声明下,实现的例子是基于安卓5.1的,而且实现的功能仅仅是能启动插件的Activity,当然了原理弄懂了,别的也好说,那么下面正式开始。实现插件化大概有三个难点1:使我们插件中的代码可以被宿主程序调用 2:Activity等四大组件可以有正常的生命周期 3:插件可以正常使用...
阅读(116) 评论(0)

安卓OnTouchListener,onTouchEvent,onClickListener执行顺序

安卓控件有很多监听事件,比较典型的有OnTouchListener,onTouchEvent和mOnClickListener,来看下他们的执行顺序 我们先自定义一个Button,在他的onTouchEvent方法中加入log@Override public boolean onTouchEvent(MotionEvent event) { Log.e("xw", "onT...
阅读(178) 评论(0)

AMS与Activity的交互

上面是Activity典型的生命周期流程图,基本的就不讲了,提两个问题来求解下 1:当启动一个新的Activity时,新旧两个Activity的生命周期执行顺序 2:当你在onCreat中调用startActivity或者finish的时候,生命周期执行流程首先来求解第一个问题,很简单,建立两个Activity,每个生命周期上打上log@Override protected void onSta...
阅读(71) 评论(0)

安卓Binder解析

Binder是Android系统进程间通信(IPC)方式之一,他的使用方法如下 先定义一个aidl文件package com.example.binderdemo;interface IBinderTest { void setName(String name); String getName(); }接着我们写一个service,里面实现具体的功能public class Bin...
阅读(89) 评论(0)

AsyncTask原理

AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask类,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程,且其是串行执行的,下面从原来上分析他是如何做的class DownloadTask extends AsyncTask { @Ove...
阅读(88) 评论(0)

Java中静态代码块执行顺序

新建一个类,里面含有静态代码块,非静态代码块以及构造函数public class Parent { private final static String TAG = "MainActivity"; static { Log.e(TAG, "父类的静态代码块"); } { Log.e(TAG, "父类的非静态代码块"); } p...
阅读(99) 评论(0)
24条 共2页1 2 下一页 尾页
    个人资料
    • 访问:4875次
    • 积分:282
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    最新评论