zoukankan      html  css  js  c++  java
  • Android Weekly Notes Issue #237

    Android Weekly Issue #237

    December 25th, 2016
    Android Weekly Issue #237
    这是本年的最后一篇issue, 感谢大家.
    本期内容包括: ConstraintLayout的使用; Android Things的应用; 如何利用第三方库使得Java具有Kotlin的一些新特性; Firebase是如何利用ContentProvider进行初始化的; Kotlin上的并发处理; 其他还有一些关于程序架构, 代码优化相关的讨论.

    ARTICLES & TUTORIALS

    Building interfaces with ConstraintLayout

    本文介绍ConstraintLayout的chains和ratios. 另外还提到很多使用ConstraintLayout的实现细节.

    所谓chains就是几个View之间建立的双向约束.

    ratios是帮助你设置View的宽高比, 它所做的事情和PercentFrameLayout差不多, 但是不用添加额外的ViewGroup.

    Electronic Candle using Android Things

    用ObjectAnimator和Android Things搭建的一个电子蜡烛.

    ExoPlayer 2.1 - What’s new

    ExoPlayer 2.1有什么新功能.
    这是他们的release notes.

    Living (Android) without Kotlin

    如果你因为种种原因不能在项目中使用kotlin, 这篇文章告诉你如何借助于一些工具和库用Java实现Kotlin的一些features.

    Christmas Voice – Part 1

    作者发布了一个改变声音的应用, 并且将其开源了: ChristmasVoice.

    How does Firebase initialize on Android?

    Firebase在Android上是如何初始化的?

    很多SDK在初始化的时候会要求应用传入Context. Firebase简化了这一步骤. 解决方案就是用了ContentProvider, 既解决了时间问题, 也得到了sdk需要的Context. 并且不需要应用的开发者添加任何额外的初始化代码.

    选择ContentProvider主要有两点原因:

    • ContentProvider初始化早.
      当一个Android进程启动的时候, 首先会初始化每一个ContentProvider, 然后是Application, 最后是被Intent启动的组件.

    在ContentProvider初始化的时候, 就可以拿到Context了.

    • ContentProvider可以merge到最终的manifest里.
      Manifest merge是在build的时候来定义你的应用最终的manifest. 最终的manifest会包含所有依赖的库的manifest中声明的组件.

    如果你也想选择用ContentProvider来做应用或库的初始化, 请注意authority的唯一性问题和ContentProvider只在主进程运行的问题.

    Seductive Code

    当我们在改善代码可读性的时候, 很有可能会影响到性能和可维护性.

    作者举例说明了他在实际编程中遇到的几个问题.

    Testing Android Things – Unit & Vendor tests

    如何开发Android Things应用, 才能让测试更加容易. 本文以一个很小的LED灯闪烁程序为例.

    Engineering the Architecture Behind Uber’s New Rider App

    Uber团队重新打造了他们的ride app, 提出了一个新的构架模式: Riblets.

    关于架构的选型, 已有的类型可以查看这个iOS Architecture Patterns.

    Rebuilding the Buffer Android Composer

    作者重构了自己应用的代码, 应用了clean architecture, 本文讲述了其过程.

    Papercut

    Papercut是一个库, 用来标记那些我们觉得需要删除或者需要重构的代码.

    Concurrency Primitives in Kotlin

    作者最近看了一本书, 讲Android的并发, 觉得很好, 想要用Kotlin来重写书中的例子, 结果发现:

    • Kotlin中没有synchronized关键字.
    • Kotlin中没有volatile关键字.
    • Kotlin中的Any, 类比于Java中的Object, 但是却没有wait(), notify()notifyAll()方法.

    所以Kotlin中的并发是怎么处理呢? 这里有个问题: Kotlin forum, Kotlin语言的开发人员表示这些应该由库来处理, 而不是语言本身.

    尽管Kotlin不支持, 但是它还是提供了一些底层的并发工具.

    • 创建线程. 因为Kotlin可以调用Java代码, 所以仍然可以通过两种方法来创建线程.
    • @Synchronized注解和synchronized()方法.
    • @Volatile注解.
    • 没有wait(), notify()notifyAll()方法, 但是可以把Object对象作为锁, 然后调用锁的这些方法.

    stackoverflow上有一个相关问题, 答案很不错, 列了处理并发的一些有用的库.

    LIBRARIES & CODE

    KataScreenshotAndroid

    一个Screen Kata应用, 用来练习做UI测试的.

    Papercut

    一个用来标记需要重构或者移除代码的工具库.

    Squint

    一个可以自定义的对角线切割View.

    Colorful

    一个动态的主题库, 让你可以方便地修改应用的颜色.

    scytale

    包装了JCA API和AndroidKeyStore API, 让创建, 加密和管理任何Android API的keys变得更容易.

  • 相关阅读:
    跑路了
    *CTF 2019 quicksort、babyshell、upxofcpp
    pyspark如何遍历broadcast
    pwn易忘操作原理笔记
    pwn学习之四
    pwn学习之三
    pwn学习之二
    pwn学习之一
    2017GCTF部分writeup
    OD使用教程12
  • 原文地址:https://www.cnblogs.com/mengdd/p/6237266.html
Copyright © 2011-2022 走看看