Android开发成长

Android Weekly Notes #423

2020-07-24  本文已影响0人  圣骑士wind

Android Weekly Issue #423

Android Vitals - What time is it?

Android的稳定性和性能监控.

Google的Android vitals: https://developer.android.com/topic/performance/vitals

各种获取时间的方法, 到底应该选择哪一个? SystemClock的官方文档中有解释:

The proper care and feeding of your Gradle build

介绍这个插件: autonomousapps/dependency-analysis-android-gradle-plugin

这个插件可以告诉你:

顺便还搭车推荐了: https://github.com/runningcode/gradle-doctor

Refactoring Android Themes with Style

对Style和Theme做的lint check.

规定Style和Theme的命名, 然后扫描xml检查.

Kotlin Actors – No Drama Concurrency

Kotlin actor包含了协程, 协程内部封装的状态, 还有一个和其他协程通信的channel. 可以是方法也可以是类.

Kotlin Actors?

Continuous Integration for Android

Android持续集成. Docker, Github Actions.

Repository Anti-Pattern in Android

这个文章的作者觉得一旦用了Repository, 程序就会变成面条程序.

However, in my opinion, if you follow this pattern, you’re guaranteed to end up with dirty spaghetti code in your project.

分析了Google Todo例子里面的Repository, 发现方法按职责可以分为三类: 为了观察而返回LiveData的方法; 访问数据的方法; 业务逻辑方法.

如果把domain相关的业务逻辑方法抽出来, 应该放在哪里呢? 通常是usecases或者interactors.

如果用了usecases, repository就显得有点多余.

为什么usecases比repository好呢: 以为前者更加具体, 后者很容易变成God Object.

所以结论是, 作者觉得Google推出的这个Repository实际上是一个Anti-pattern.

Improving app startup with I/O prefetching

Android 11, IORap, 预取技术, 加速app启动.

是在系统层的改动.

Support for newer Java language APIs

如果要使用更新版本的Java API. 用Android Gradle plugin 4.0.

具体是因为使用了java.time api, 在Android API level 26以下就会有问题.

Android实际上使用的是Open JDK.

解释了Desugaring, 是D8/R8来做的.
作用是为不支持Java 8的设备加入这些新的API.

build的时候检测到用了新的API, 首先把源代码编译成字节码, 转换成dex, 这时候为缺失Java 8的设备加入Java 8的runtime代码, 作为一个单独的dex library.

使用的时候:

android {
  defaultConfig {
    //Only required when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  // Dependency with the implementation code for the APIs
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5'
}

具体涉及的新的API在这里列出: https://developer.android.com/studio/write/java8-support-table

LiveData with Coroutines and Flow — Part I: Reactive UIs

LiveData和协程, Flow.

Code

上一篇下一篇

猜你喜欢

热点阅读