Android Weekly Notes Issue #230

来源:http://www.cnblogs.com/mengdd/archive/2016/11/11/6054727.html
-Advertisement-
Play Games

Android Weekly筆記, 本期內容包括: Mockito的擴展; ConstraintLayout的鏈式約束; Kotlin的Async-Await; RxJava2.0; 屏幕旋轉導致的Activity重建; Throwable類的設計問題; Espresso測試中如何等待非同步請求返回;... ...


Android Weekly Notes Issue #230

November 6th, 2016
Android Weekly Issue #230.

Android Weekly筆記, 本期內容包括: Mockito的擴展; ConstraintLayout的鏈式約束; Kotlin的Async-Await; RxJava2.0; 屏幕旋轉導致的Activity重建; Throwable類的設計問題; Espresso測試中如何等待非同步請求返回; Kotlin的擴展和運算符重載; Android KeyStore實現用戶驗證.

代碼部分有proguard的庫, mvp的庫和WifiManager, ConfigurationManager的包裝庫.

ARTICLES & TUTORIALS

Extending Mockito

這篇文章講瞭如何擴展Mockito, 簡化對參數的驗證.

首先作者舉了之前驗證參數的例子, 用的是ArgumentCaptor, 寫起來很麻煩, 用了自定義的matcher之後簡化了很多.

ConstraintLayout Chains – Part 2

上一篇文章講過在ConstraintLayout中如何創建對稱的鏈式約束, 本篇文章介紹chainStyle的不同設置和比較.

預設的spread chain: 均勻分佈;
inside spread chain: 邊緣元素頂邊, 中間均勻分佈.

如果指定了權重, 將會按照權重佈局. 那麼spread chain和inside spread chain就沒有區別了.

packed chain: 預設會把所有元素都放在一起放在中間, 可以指定bias來定義偏移基準, 預設bias是0.5, bias設置為0.25的意思就是往左偏.

A glimpse of Async-Await on Android

Kotlin 1.1推出了coroutines, 這是一個讓計算可以在某個點暫停然後之後又恢復的功能, 例子是幾年前C#的Async-Await.

作者先舉例說明瞭非同步操作的幾種常見實現, 最後結合自己的庫用Async-Await做了一個例子.

What's different in 2.0

RxJava2.0.0已經發佈了. 這是它的wiki page來介紹2.0有什麼不同.

Activity Revival and the case of the Rotating Device

本篇文章講configuration變化(比如屏幕旋轉)導致的Activity重建.

為什麼configuration變化的時候要重建Activity呢? 因為系統想要儘力地做一些helpful的事情, 希望在這種時候能重新載入正確的資源.

怎麼處理呢?

方法一: 讓系統自動處理. 在屏幕旋轉時, onSaveInstanceState()會在Activity銷毀前調用, 可以存儲一些狀態, 之後重建的時候從bundle中拿出來恢復.

方法二: 自己處理. 如果你想要獲取更多控制, 那麼你可以在manifest中聲明configChanges類型, 然後在Activity中覆寫onConfigurationChanged()方法, 來自己做處理.

另外文章中還討論了網路請求, 屏幕方向設置, retained fragment的使用等.

RxJava and Retrofit Throwing a Tantrum

作者討論了他們在項目中遇到的一個問題.
他們用RxJavaHooks.enableAssemblyTracking();來收集RxJava崩潰棧信息, 可以顯示出到底是哪一個Observable崩了.
使用這個工具以後發現了一個問題, 進而研究了JDK的Throwable類.

原來cause不存在(this)和cause未知(null)是兩種不同的情況, 但是ThrowablegetCause()方法都會返回null.

Retrofitting Espresso

用Espresso做測試, 如何等待網路請求結束再驗證UI.

Composing functions in Kotlin with extensions and operators

K結合otlin的extensions和operator overloading功能, 改善function, 讓代碼變得更優雅.

Authentication sucks. Bad security too

一個例子, 說明為什麼老的驗證方法用戶體驗不好, 我們如何在仍然考慮用戶安全的情況下進行改善.

解決方案是用Android 6.0推出的Android Keystore.
作者展示瞭如何實現並提供了Demo.

Design

Eight don’ts for your Material Design app

Material Design app需要避免的8個點.

LIBRARIES & CODE

Android-proguards

使用一行就可以加上所有流行庫的proguard.

Moxy

一個MVP的庫.

WiseFy

包裝了Android的WifiManager和ConnectivityManager的一個庫.

VIDEOS & PODCASTS

Droidcon NYC 2016
所有Droidcon NYC 2016的視頻資源.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redux就是個數據中心,不依附於任何框架在哪使用都行。但是和它最搭配的應該就是React了,而且大家學習它的動力大多也是解決React狀態管理的問題。都說Redux文檔詳盡清晰,但我感覺並不友好,它沒有用最簡單直觀的方式告訴你如何搭配React使用。研究了兩天的文檔和示例,終於在項目中用上了我認為 ...
  • 目前 "AlloyFinger" 作為騰訊手機QQ web手勢解決方案,在各大項目中都發揮著作用。 感興趣的同學可以去Github看看: "https://github.com/AlloyTeam/AlloyFinger" 在騰訊,如:興趣部落、QQ群、QQ動漫、騰訊學院、TEDxTencent、 ...
  • 1、跨域請求: Cross Domain Request:跨功能變數名稱的HTTP請求,瀏覽器從某個功能變數名稱下的資源訪問了另一功能變數名稱下的另一資源(協議、功能變數名稱或是埠號不同); ①瀏覽器允許跨域請求的情形: <img>、<link>、<script>、<iframe> ②禁止跨域請求的情形: XHR——瀏覽器預設出 ...
  • 前言 DOM的作用是將網頁轉為一個javascript對象,從而可以使用javascript對網頁進行各種操作(比如增刪內容)。瀏覽器會根據DOM模型,將HTML文檔解析成一系列的節點,再由這些節點組成一個樹狀結構。DOM的最小組成單位叫做節點(node),文檔的樹形結構(DOM樹)由12種類型的節 ...
  • 簡介 沒有用過Node,記的這些只是學習的筆記,有什麼錯的地方,望各位前輩指正。 Node是一個伺服器端Javascript解釋器,依賴於Chrome v8引擎進行代碼編譯,事件驅動、非阻塞I/O都是他顯著的特點。 伺服器能夠處理的併發連接的最大數量是目前Web應用程式架構的瓶頸,Node的出現就打 ...
  • 一、項目概要 1.1 項目效果如圖: 1.2 需要使用到的技術 ViewDragHelper: 要實現和QQ5.0側滑的特效,需要藉助谷歌在2013年I/O大會上發佈的ViewDragHelper類,提供這個類目的就是為瞭解決拖拽滑動問題 1.3 側滑菜單的實現方式 1. SlidingMenu 第 ...
  • 什麼時候需要 Looper Looper用於封裝了android線程中的消息迴圈,預設情況下一個線程是不存在消息迴圈(message loop)的,需要調用Looper.prepare()來給線程創建一個消息迴圈,調用Looper.loop()來使消息迴圈起作用,使用Looper.prepare() ...
  • 下載地址與說明http://www.androiddevtools.cn/#sdk-list 手動添加 SDK 這是Android開發所需的sdk,下載並解壓後,將解壓出的整個文件夾複製或者移動到 your sdk 路徑/platforms文件夾,然後打開SDK Manager,打開 Tools(工 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...