Android Weekly Notes Issue #250

Android Weekly Issue #250

March 26th, 2017
Android Weekly Issue #250.
本期內(nèi)容: 好幾篇關(guān)于Android O預(yù)覽版的文章; JUnit 5的動態(tài)測試; 作為團(tuán)隊(duì)里唯一的Android開發(fā)如何學(xué)習(xí)和工作; Support庫新推出的基于物理的動畫API: SpringAnimation; Uber Rider項(xiàng)目重構(gòu)中關(guān)于依賴注入的scope層級的改動; Kotlin和RxJava的簡潔性.

ARTICLES & TUTORIALS

O-h yeah! What we look forward to in Android O

Google宣布了最新Android O的預(yù)覽程序. Novoda team查看了最新文檔來看看什么新特性最讓大家欣喜.

  • 更寬廣的色域和多種顏色空間支持:
    我們不再被限制在sRGB的顏色空間里, 文檔見ColorSpace.
  • 字體支持.
  • Adaptive icons: Android N中提供了圓形的啟動圖標(biāo); 從Android O開始, 手機(jī)開發(fā)商和launcher開發(fā)者們可以指定一個(gè)mask到應(yīng)用提供的背景圖上.
  • ACCESSIBILITY按鈕: Accessibility services(比如TalkBack)可以在有軟導(dǎo)航鍵的設(shè)備上添加一個(gè)按鈕.
  • 指紋手勢.
  • 自動大小的TextView.
  • Autofill APIs. 自動填表.

JUnit 5: Dynamic Tests

本篇講如何簡化一個(gè)測試cases都很類似的test suite.

首先, 找出不同的部分, 抽取一個(gè)方法, 把不相同的部分作為參數(shù)傳進(jìn)去.

然后用JUnit 5的動態(tài)測試(Dynamic Tests)特性.
兩個(gè)關(guān)鍵組件: TextFactoryDynamicTest.
文中代碼詳細(xì)說明了它們的用法.

Flying Solo with Android Development

作者幾經(jīng)周轉(zhuǎn), 從4人Android團(tuán)隊(duì)到2人團(tuán)隊(duì), 現(xiàn)在又到了一個(gè)新團(tuán)隊(duì), 作為團(tuán)隊(duì)里唯一Android開發(fā). 在這篇文章中, 她分享了一些覺得不錯(cuò)的學(xué)習(xí)資源和她平時(shí)的工作習(xí)慣以及建議.

Introduction to SpringAnimation with examples

本文講彈簧效果動畫的實(shí)現(xiàn).

Dynamic-animation是Android Support Library 25.3.0最新引進(jìn)的, 用于實(shí)現(xiàn)基于物理的動畫.

作者這篇文章介紹了SpringAnimationSpringForce的用法, 提供了幾個(gè)例子, 動態(tài)改變View的位置, 旋轉(zhuǎn)和大小屬性: android-springanimation-examples
.

Rewriting Uber Engineering’s Rider App with Deep Scope Hierarchies

Android Uber rider app的重構(gòu).
主要討論了由于存在很多共用組件, 所以依賴注入的設(shè)計(jì)需要改進(jìn).

首先介紹了舊的設(shè)計(jì): 兩級Scope層次.
后來他們的新設(shè)計(jì)采用了深層次的scope層級, 減少了耦合.

最后又介紹了幾種他們曾經(jīng)考慮過的架構(gòu)模式.

It’s time to kiss goodbye to your implicit BroadcastReceivers

Android O的preview已經(jīng)出來了: Android O Preview. 這是它列出來的Behavior changes.

如果你想要把a(bǔ)pp target到Android O, 而且你的manifest中注冊了一些隱式的BroadcastReceiver. 那么這篇文章就是為你準(zhǔn)備的.

Android做這一切的出發(fā)點(diǎn)都是為了節(jié)約電量.

Android 7.0的時(shí)候就移除了三種隱式廣播的支持. 它們是CONNECTIVITY_ACTION, ACTION_NEW_PICTUREACTION_NEW_VIDEO.

現(xiàn)在Android O中, 除了background-broadcasts中提到的, 其他所有在manifest中注冊的隱式廣播都不再工作了. (注意這里的關(guān)鍵字: manifest中注冊, 隱式廣播.)

那么你的manifest中如果有receiver, 現(xiàn)在應(yīng)該怎么辦呢?

首先看看你的廣播是否是隱式的. 根據(jù)文檔, 所有跟你的應(yīng)用沒有直接關(guān)系的廣播都是隱式的; 而直接相關(guān)的都是顯式的.

然后檢查你的應(yīng)用是否真的受到了影響, 因?yàn)橛幸恍╇[式的廣播是例外情況.

真的受到影響了怎么辦呢? 使用JobScheduler來拯救. 但是它只在API 21以上有, 如果你的最低API小于21, 可以用官方推薦的firebase-jobdispatcher-android. 作者他們團(tuán)隊(duì)用的是Evernote的android-job.

如果上面的庫仍然不能幫到你, 你可以考慮把廣播換成動態(tài)注冊的.
不管你的廣播是隱式的還是顯式的, Context.registerReceiver()是永遠(yuǎn)有效的. 但缺陷就是注銷以后就不能再收到事件了.

Random Musings on the O Developer Preview 1

作者對Android O預(yù)覽的一些看法.

比較令人擔(dān)心的幾點(diǎn)

  • 后臺工作的處理: 許多隱式的廣播可能不再起作用, 可能會改變某些應(yīng)用的行為.
  • 多顯示支持. 允許用戶把一個(gè)activity投射到外部顯示器上. 這個(gè)行為還需要進(jìn)一步測試, 如果我們投射到一個(gè)不可觸摸的顯示器上會怎樣?
  • 關(guān)于磁盤空間, 緩存目錄.
  • Support Libraries支持的最小API為14.

有啟發(fā)性的幾點(diǎn)

  • 可以給Notification設(shè)置timeout.
  • Picture-in-Picture (PIP)模式. 一種特殊的多窗口模式, 多數(shù)被用來播放視頻, TV已經(jīng)有了.
  • 新字體.
  • Storage Access Framework (SAF) -> Seekable streams.
  • WebView將支持allow-cleartext設(shè)置.
  • 應(yīng)用安裝其他應(yīng)用需要用戶授權(quán).
  • Content provider分頁查詢.
  • FragmentLifecycleCallbacks.
  • SmsManager可以創(chuàng)建tokens.
  • SharedPreferences提供了接口, 可以更換底層存儲實(shí)現(xiàn).
  • findViewById()不再需要強(qiáng)轉(zhuǎn).

其他你可能感興趣的

  • View.setTooltipText().
  • TextView.setJustify().
  • 提供了padding和margin的Vertical和Horizontal屬性, 這樣一下就可以設(shè)置同一方向上的兩個(gè)值.
  • ProgressBar.setMin().
  • ANDROID_ID現(xiàn)在是對每個(gè)應(yīng)用來說, 而不是用戶或設(shè)備. 見Privacy.

Writing Concise Code with Kotlin and RxJava

用Github API舉例子, 用RxJava和Kotlin實(shí)現(xiàn)一個(gè)功能, 說明了它們的簡潔性.

LIBRARIES & CODE

Fakeit

Kotlin版的假數(shù)據(jù)生成器.

Cicerone

一個(gè)輕量級的Android導(dǎo)航庫.

data-binding-validator

表單數(shù)據(jù)驗(yàn)證器, 使用data binding framework實(shí)現(xiàn).

LabCoat

GitLab client for Android.

NEWS

O-MG, the Developer Preview of Android O is here!

Google發(fā)布了下一個(gè)系統(tǒng)版本Android O的開發(fā)者預(yù)覽版.

TOOLS

Android Studio meets Slack

一個(gè)小工具, 可以直接把Android Studio打的包發(fā)到Slack去.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容