URIURI 是一种更通用的资源标识符,URL 实际是它的子集。URI 是一个通用的概念,由两个主要的子集 URL 和 URN 构成 ,URL 是通过描述资源的位置来标识自愿的,而 URN 则是通过名称来识别资源,与它们所处的位置无关
URN 的好处是显而易见的,但是将 URL 转换成 URN 需要进行大量的工作,在可预见的未来,英特网资源仍然会以 URL 来命名。
URL 格式
1<scheme>://<user>:<password>@<host><port><path>;<params>?<q...
了解 Gradle 的架构
每个 Gradle 构架都包括了三个基本的构建块:项目(Projects)、任务(tasks)、和属性(properties),每个构建至少包括一个项目,项目包括一个或多个任务,项目中有很多属性来控制构建过程.
Gradle 运用了领域驱动的设计理念(DDD)来给自己的领域构建软件建模,因此 Gradle 的项目和任务都在 Gradle 的 API 中有一个直接的 class 来表示,接下来我们来深入了解每一个组件和它对应的 API。
ProjectProject 表示你想要构建的一个目标,对应具体的内容可以是一个项目、组件、jar 等。当开始构建的时候,G...
Gradle 实战(一)Gradle 是继 Ant 、Maven 之后又一个优秀的 Java 项目构建工具.它同样实现了依赖管理、仓库、约定优于配置等优秀的概念.对 maven 和 Ant 项目与资源也有很好的兼容和支持.相比 Maven 和 Ant 来说 Gradle 的构件脚本是声明式的、可读的,可以清晰的表达意图.它使用一个 DSL 语言 Groovy (类似 java ) 来代替 XML 语言大大减少了构件代码的大小。在 Android Studio 中更是成为了构建 Android 项目的标准工具. 我们就来学习和了解它是如何工作和使用的。
###Groovy
Groovy 是...
####基于 Linux 内存管理
Android 系统虽然是基于 Linux 2.6 内核开发的开源操作系统,但是 Android 系统对 Linux 的内存管理系统进行了优化,Linux 系统会在进程活动停止后就结束该进程,而 Android 系统则将这些进程都保留在内存中(即使你是退出该程序而不是 Home 键,任然会保留空置进程),这些保留在内存里的进程通常不会影响整体系统的运行,并且当用户再次激活这些进程时,提升了进程的启动速度和保留了状态。
内存分配Android 系统会对每个进程的 Dalvik 设置了严格的 Heap 使用限制,如果应用达到内存限制容量后仍然继续申请内存就...
这篇文章主要是复习 Android 开发艺术探索的第 10 章和 第 11 章,整理了 Android 中关于线程的知识点。
ThreadLoacalThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其他线程来说则无法获取到数据。
ThreadLoacal 的另一个使用场景是复杂逻辑下的对象传递,例如监听器,有些时候一个线程中的任务过于复杂,这可能表现为函数调用栈比较深以及入口的多样性,在这种情况下使用 ThreadLocal 可以让监听器作为线程内的全局对象存在,只要在当前线程,就可以通过 ge...
初识 ViewRoot和DecorViewViewRoot 对应 ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带, View 的三大流程均是通过 ViewRoot 来完成的。在 ActivityThread 中,当 Activity 对象被创建完毕后,会将 DecorView 添加到 Window 中,同时会创建 ViewRootImpl对象,并将 ViewRootImpl 和 DecorView 建立关联。源码如下:
12root =new ViewRootImpl(view.getContext(),display);root.se...
View 的位置View 的位置由它的四个顶点来决定,分别对应于 View 的四个属性:top、left、right、bottom,其中 top 是左上角纵坐标,left 是左上角横坐标,right 是右下角横坐标,bottom 是右下角纵坐标。这些坐标都是相对于 View 的父容器来说的,因此它是一种相对坐标。它们的关系以及获取的 API 如下图。
MotionEvent 和 TouchSlopeMotionEvent在手指接触屏幕后触发的一系列事件,典型的如下:
ACTION_DWON 手指刚接触屏幕
ACTION_UP 手指离开屏幕
ACTION_MOVE 手指在屏幕上滑动
...
IPC 是 Inter-Process Communication 的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程。那么什么是进程?什么是线程?按照操作系统的概念,线程是 CPU 调度的最小单元,同时线程是一种有限的系统资源。二进程一般指一个执行单元,在 PC 和移动设备上指一个程序或者应用。一个进程可以包含多个线程,也可以只有一个线程即主线程,在Android 也叫 UI 线程。
为什么需要多进程通信,使用场景前面也有说在操作系统中一个进程对应的指一个程序或者应用,当两个应用需要数据交互的时候就必须要采取夸进程的通信方式来获取所需要的数据。在 Android ...
###activity的生命周期
activity a 启动 activity b 然后返回activity a 再返回到桌面 它们的生命周期是怎样变化的?
A onCreate —> A onStart —> A onResume —> 跳转 —> A onPause —> B onCreate —> B onStart —> B onResume —> A onStop —> 返回 —> B onPsuse —> A onRestart —> A onStart —> A onResume —> ...
前言DataBinding 出来很久了,不过现在连 MVP 都没有大规模被使用,别说写法用法更颠覆性的 DatatBinding 这样的了。但 DataBinding 这种面向 MVVM 的编程思想前端的使用已经非常普遍了,且确实给开发带来很大的便利。所以还是有必要学习和了解。
什么是 DataBinding?简单的来说 DataBinding 是 Google 在 Android 上的一种 MVVM 的实现。MVVM 是Model-View-ViewModel的简写,它是 MVP(Model-View-Persenter) 模式与 WPF 结合的应用方式发展演变过来的一种新型架构。而 ...