Android Weekly Notes Issue #238

Android Weekly Issue #238

January 1st, 2017
Android Weekly Issue #238
本期內容包括: Firebase發送Notification; RecyclerView的預取; 后臺工作的實現方式討論; RecyclerView分組數據; 跨平臺應用工具Flutter介紹; Gradle依賴管理;
寫測試的一些注意事項; Android Things應用搭建及一些思考; 如何搭建CI等.

ARTICLES & TUTORIALS

Mastering Firebase Notifications

用Firebase發通知:

  • Console Notifications.
  • 使用命令行, 發送curl命令.
  • FirebaseMessagingService在應用前臺的時候處理通知.
  • 如果應用前后臺的時候都需要處理, 則發送data而不是notification.
    官方文檔Firebase cloud-messaging.

RecyclerView Prefetch

作者研究了RecyclerView的渲染時間, 發現在滾動的時候很多的時間會花在新item的創建和bind上, 這樣會推遲UI線程的其他工作, 還有RenderThread的后續工作, 如果超出了frame boundary, 就有可能會造成明顯的卡頓.

而同時前一幀, UI線程可能處于空閑狀態.

那么我們有沒有可能以一種預取的方式, 把即將出現的View在提前的空閑階段準備好呢?

pre-fetch的優化已經在Support Library v25加入, v25.1.0有進一步的加強. 如果你沒有自定義LayoutManager, 也沒有嵌套RecyclerView, 那么你升級support library之后就自動獲得了這項優化. 其他兩種情況你還需要調用一些方法.

你可以設置LayoutManager.setItemPrefetchEnabled()來對比開啟和關閉預取功能前后的不同. 性能測量用SystraceGPU profiling.

Things to consider before running background tasks

完成后臺任務的幾種方式和各自的優缺點分析.

  • Thread.
  • AsyncTask.
  • Service.
  • IntentService.
  • Loader.
  • JobService and JobScheduler. GCM Network Manager.
  • RxJava.

Android RecyclerView - Grouping Data

作者展示了如何將RecyclerView中的數據分組展示, 在他的例子中是按照時間分組, 每一組開始是該組的時間占據一行.

其實主要是前期的數據處理, 首先創建一個HashMap, 分組依據作為key, 符合該依據的數據作為值存在對應key的value list里; 然后給日期和數據創建一個共同的基類, 把HashMap再重新展開成一個List, 里面穿插好數據. 最后用RecyclerView按照數據類型不同顯示兩種布局.

Flutter Intro

Flutter是一個Google推出的新工具, 用來構建跨平臺的應用.

本文介紹了如何setup和創建一個Hello World.

How to add Gradle dependencies using ‘foreach’

一種管理依賴的方式, 把所有的依賴定義在同一個文件的不同分組里, 然后在每個module各自添加自己的分組即可.

Best practices to improve app engagement

如何提高app的用戶參與度.

The Do’s and Don’ts of Writing Test cases in Android

作者分享了在寫測試的時候需要注意的幾點:

  • 首先明確我們要測試的是什么, 預先條件是否滿足, 如果是因為前置條件不滿足, 那么并不是我們的測試本身失敗了.
  • 每個測試都是獨立完成的, 測試的執行順序不應該影響結果.
  • 在測試中不要寫條件語句. 條件語句是在實際代碼中的, 每一個條件都應該對應一個單獨的測試case.
  • 測試應該不受外部因素影響, 比如server和網絡. 因為如果因為這類原因測試失敗了, 并不代表我們的代碼有bug.

Making Rainbow HAT Work with the Android Things

一個Android Things應用.

Christmas Voice – Part 2

一個小應用, 錄音, 做轉換并播放.

Will Android do for the IoT what it did for mobile?

關于Android Things的一些看法.

Set up a CI server for Android dev

如何搭建Android項目的CI, (Ubuntu + Jenkins + SonarQube).

DESIGN

Material: Growth & communications

如何進行用戶引導, feature發現和手勢教育.

LIBRARIES & CODE

PanoramaImageView

一個ImageView, 在設備轉動的時候可以自動滾動內容.

TextDecorator

可以給文字分段加上各種裝飾, 下劃線, 點擊事件等.

Delightful-SQLBrite

一個示例應用, 展示SQLDelightSQLBrite結合使用.

mainframer

一個遠程build的腳本.

material-about-library

創建一個Material風格about頁面的庫.

android-snowfall

下雪View.

Android-ExpandIcon

展開/合上的上下箭頭icon, 支持點擊和手勢滑動切換.

RxAnimations

Rx形式的動畫庫.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容