ConnorLin's Blog


  • 首页

  • 归档

  • 分类

  • 标签

Android Data Binding 系列(二) -- Binding与Observer实现原理

发表于 2016-07-13   |   分类于 Android DataBinding   |  

写在前面

上篇文章 Android Data Binding 系列(一) – 详细介绍与使用 介绍了 Data Binding 的基础及其用法,本文接上篇,结合DataBindingDemo 来学习下 Data Binding 的实现。

绑定实现

Activity在inflate layout时,通过DataBindingUtil来生成绑定,从代码看,是遍历contentView得到View数组对象,然后通过数据绑定library生成对应的Binding类,含Views、变量、listeners等。生成类位于 build/intermediates/classes/debug/...package.../databinding/xxx.java 下,具体如何生成这里暂不作深入。

绑定过程

  • 首先,会在父类(ViewDataBinding)中实例化回调或Handler,用于之后的绑定操作;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static final boolean USE_CHOREOGRAPHER = SDK_INT >= 16;

if (USE_CHOREOGRAPHER) {
mChoreographer = Choreographer.getInstance();
mFrameCallback = new Choreographer.FrameCallback() {
@Override
public void doFrame(long frameTimeNanos) {
mRebindRunnable.run();
}
};
} else {
mFrameCallback = null;
mUIThreadHandler = new Handler(Looper.myLooper());
}
阅读全文 »

Android Data Binding 系列(一) -- 详细介绍与使用

发表于 2016-07-02   |   分类于 Android DataBinding   |  

写在前面

要学习新东西,最好的办法是先学会如何使用。所以,本文仅作 Android Data Binding 的介绍并结合 DataBindingDemo 来理解它的用法,后续再对其原理进行深入探讨。

简介

Data binding 在2015年7月发布的Android Studio v1.3.0 版本上引入,在2016年4月Android Studio v2.0.0 上正式支持。目前为止,Data Binding 已经支持双向绑定了。

Databinding 是一个实现数据和UI绑定的框架,是一个实现 MVVM 模式的工具,有了 Data Binding,在Android中也可以很方便的实现MVVM开发模式。

Data Binding 是一个support库,最低支持到Android 2.1(API Level 7+)。

Data Binding 之前,我们不可避免地要编写大量的毫无营养的代码,如 findViewById()、setText(),setVisibility(),setEnabled() 或 setOnClickListener() 等,通过 Data Binding , 我们可以通过声明式布局以精简的代码来绑定应用程序逻辑和布局,这样就不用编写大量的毫无营养的代码了。

阅读全文 »

Android Studio Run app 报错

发表于 2016-05-07   |   分类于 Android Studio   |  

问题描述

今天在码代码时遇到一个莫名其妙的问题,问题是这样的:

不论 clean project、rebuild project 还是 make module 都能顺利执行,但是只要 Run app 就会报如下错误

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/connorlin/Program/jdk1.7.0_71/bin/java'' finished with non-zero exit value 134

问题分析

通常,看到 with non-zero exit value 134 首先想到的是依赖冲突了,但细心点能发现,依赖冲突一般是with non-zero exit value 1 或 with non-zero exit value 2,此处却是134。

再看Process 'command '/home/connorlin/Program/jdk1.7.0_71/bin/java'' finished with non-zero exit value 134 似乎是JDK相关。

阅读全文 »

Markdown的常用语法(个人总结)

发表于 2016-05-06   |   分类于 markdown   |  

简介

Markdown 是一种轻量级标记语言,它用简洁的语法代替排版,使我们专心于码字。它的目标是实现易读易写,成为一种适用于网络的书写语言。同时,Markdown支持嵌入html标签。

注意:Markdown使用#、+、*等符号来标记, 符号后面必须跟上 至少1个 空格才有效!

Markdown的常用语法

标题

Markdown 标题支持两种形式:

1、用#标记

在 标题开头 加上1~6个#,依次代表一级标题、二级标题….六级标题

阅读全文 »

使用Android Studio 进行NDK开发和调试

发表于 2016-04-28   |   分类于 Android Studio, NDK, JNI   |  

尽管Android Studio已经越来越流行了,但很多人还是习惯于Eclipse或源码环境下开发JNI应用。个人认为使用Android Studio作NDK开发是必然趋势,所以本文将简单介绍如何在Android Studio上实现NDK开发。

简介

JNI

JNI 是Java Native Inteface的缩写,是Java中定义的一种用于连接Java和C/C++接口的一种实现方式。

NDK

NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的一套用于快速创建native工程的一个工具。
使用这个工具可以很方便的编写和调试JNI的代码。

NDK可从官网或AndroidDevTools(个人网站)下载。

阅读全文 »
12
ConnorLin

ConnorLin

9 日志
7 分类
8 标签
RSS
github
© 2016 ConnorLin
由 Hexo 强力驱动
主题 - NexT.Mist