Monthly Archive: 六月 2016

Concurrency: Basic Threading (3)

9. Coding variations 9.1. 直接继承Thread   创建任务除了通过实现Runnable接口,也可以通过直接继承Thread的方式来实现。

9.2. 自管理Runnable   还有一种自管理Runnable的用法,由实现Runnable的类自己创建并开始线程。 [crayon-59c2e560ae9aa8…
Read more

Concurrency: Basic Threading (2)

5. Sleep   Sleep()可以在指定时间内阻塞当前任务的执行。

这里使用了Java SE 5中引入的TimeUnit,显式地指明了时间单位MILLISECONDS,具有更好的可读性。这里在run()中捕获sleep()抛出的InterruptedException,异常不会跨线程传递,需要在抛出异常的任务中就地处理。   …
Read more

Concurrency: Basic Threading (1)

本系列是Thinking in Java (Fourth Edition)中Concurrency一章的内容总结。主要关注实例、常见用法和陷阱,便于日后查用。 1. Defining Tasks   任务(Task)用于描述希望并发运行的活动。定义一个任务,只需实现Runnable接口,并在run()方法中给出任务的具体行为:

  …
Read more

Gradle Cheat Sheet (19): Multidex Support

  在Android的Java虚拟机上运行的是Dalvik字节码,而不是Java字节码。在Java编译完成后,Java字节码会被转换为Dalvik字节码,称为Dexing。在这个过程中,会生成一张包含了应用中的所有方法的表,每个方法用两个字节进行索引,也就是说,最多能有65k个方法。如果方法数量过多,将无法完成编译。   以这里的工程为例,总共有100个类,每个类有700个方法,尝试编译将给出错误…
Read more

Gradle Cheat Sheet (18): Adding a Signing Configuration

  给App签名需要三个步骤:首先需要创建一个Key Store和一个Key;然后在build.gradle中创建一个签名配置,主要用于描述如何访问keystore和key;最后要把这个签名配置指定给Build Type。 1. 创建Key Store和Key   选择Build > Generate Signed APK…,打开Generate Signed APK向导,首先需…
Read more

Gradle Cheat Sheet (16): Creating a Java Library

1. 建立Library   首先配置一个Java项目作为Library。创建一个Android App工程,在工程根目录/javaJokes/src/main/java/com/udacity/gradle/jokes/下建立Joker.java,内容为:

  在/javaJokes/src/test/java/com/udaci…
Read more

Gradle Cheat Sheet (15): Flavors

1. Declaring Flavors   除了使用Build Type,也可以使用Product Flavor来对build进行定制。Product Flavor一般用于创建提供给用户的不用应用版本,比如免费版和付费版。   Anroid插件不会自动创建默认的Product Flavor。要创建Product Flavor,只需在[crayon-59c2e560b16f6121050891-i…
Read more