Android開發技術週報 Issue#83

教程

  1. 應用首頁Activity的單例實現html

    目前有一部分android APP須要這樣一種場景,即應用須要保留一個應用首頁主Activity,其它子Activity永遠在主Activity之上,跳轉到子Activity以後,無論以哪一種方式跳轉,最終均可以返回到主Activity,這種場景有點相似主桌面的概念。這種場景若是純fragment來實現,須要管理fragment棧,中間若是發生嵌套跳轉,fragment棧的管理會變得很是複雜,因此不免會須要使用部分Activity來實現,而且因爲主Activity承載的內容比較豐富,初始化會比較耗時,所以要儘可能複用已初始化的Activity。android

  2. 打通Android Gradle編譯過程的任督二脈ios

    本文主要是基於本身在工做當中的一些Android Gradle實踐經驗,對gradle相關知識作的一個簡單總結和分享,但願對你們有幫助。首先會講Gradle大概的工做流程和實現原理,並以部分源碼分析佐證。其中包括project中配置數據何時取,各個task的建立時機,如何自定義控制編譯過程等。而後着重會分析編譯過程當中class到dex這一步的具體過程,以及當初遇到的一些問題和解決方法。git

  3. Google官方MVP+Dagger2架構詳解程序員

    安卓應用在初始化對象的時候常常須要處理各類依賴關係。好比說網絡訪問中使用Retrofit,Gson,本地存儲中使用shared preference。無一例外,咱們都都須要在使用它們的地方進行實例對象構建,並且其中還可能存在着各類各樣的繼承依賴關係。依賴注入(Dependency Injection,簡稱DI)是用於削減計算機程序的耦合問題的一個法則。對象在被建立的時候,由一個調控系統內全部對象的外界實體將其所依賴的對象的引用傳遞給它。也能夠說,依賴被注入到對象中。github

  4. 深刻淺出 Retrofit,這麼牛逼的框架大家還不來看看?web

    Android 開發中,從原生的 HttpUrlConnection 到經典的 Apache 的 HttpClient,再到對前面這些網絡基礎框架的封裝,好比 Volley、Async Http Client,Http 相關開源框架的選擇仍是不少的,其中由著名的 Square 公司開源的 Retrofit 更是以其簡易的接口配置、強大的擴展支持、優雅的代碼結構受到你們的追捧。也正是因爲 Square 家的框架一如既往的簡潔優雅,因此我一直在想,Square 公司是否是隻招處女座的程序員?面試

  5. 開發第三方庫最佳實踐性能優化

    本文會不按期更新,推薦watch下項目。若是喜歡請star,若是以爲有紕漏請提交issue,若是你有更好的點子能夠提交pull request。本文的示例代碼主要是基於做者的經驗來編寫的,若你有其餘的技巧和方法能夠參與進來一塊兒完善這篇文章。網絡

  6. Android中apk加固完善篇以內存加載dex方案實現原理(不落地方式加載dex)

    時隔半年,困擾的問題始終是須要解決的,以前也算是沒時間弄,今天由於有人在此提起這個問題,那麼就不能不解決了,這裏寫一篇文章記錄一下吧。那麼是什麼問題呢?就是關於以前的一個話題:Android中apk加固技術實現,關於這個問題,以前的一篇文章已經說過了,沒有了解的同窗能夠點擊這裏:Android中apk加固技術實現

  7. Binder 源碼分析

    Binder 是一種 Android 進程間通訊機制,提供遠程過程調用(Remote Procedure Call)功能。咱們最直接的使用是調用 Context.getSystemService() 來獲取系統服務,或直接使用 AIDL 來實現多個程序(APP)間數據交互。Binder 是很是重要的 Android 基礎組件,幾乎全部的進程間通訊都是使用 Binder 機制實現的。本文將結合源碼展開講述 Binder ,同時對一些重要知識點提供擴展閱讀的參考。

  8. Service源碼解析

    Service是Android四大組件之一。在通常的App開發場景中,它的存在每每是爲了保證App切換到後臺後,仍然具有處理數據的能力。Service實現了一套異步的跨進程通訊模型,經過Binder機制,Service能夠優雅的屏蔽跨進程調用的複雜性。通常來講,一個普通的Service運行在當前進程的主線程中,也就是說,若是不開闢線程,把耗時的操做直接甩在Service,那麼系統就會賞你一個ANR(application Not Responding)警告。固然,爲了方便作耗時操做,SDK層也提供了IntentService,它開闢了一個Work Thread來順序處理耗時請求,從而避免了阻塞主進程。

  9. 如何調試Android Framework?

    Linus有一句名言廣爲人知:Read the fucking source code. 但其實,要深刻理解某個軟件、框架或者系統的工做原理,僅僅「看」代碼是遠遠不夠的。就拿Android Framework來講,整個代碼量很是大不說,那些個動輒幾萬行的類如何去理解?因此我今天要說的就是:Debug the fucking source code!!

  10. Android 多主題之坑

    在寫多主題框架時,首先一個概念要分清就是多彩主題和夜間模式。多彩主題實際上是白天模式的衍生,與夜間模式是對立的。雖然夜間和多彩是對立,但仍是建議多彩主題應該與夜間模式解偶,由於有時夜間模式的顏色變化並非簡單的顏色取反,受產品設計的影響較大,有時甚至一個tag在夜間和多彩中的取色徹底不同的,這時若是還在強求經過一次編碼「通吃「多彩和夜間,這樣的作法徹底是不明智的,同時也會致使框架易用性變差。

  11. React Native痛點解析之性能調優

    自從React Native出世,雖然官方一直儘量的優化其性能,爲了能讓其媲美原生App的速度,可是現實感受有點不盡人意。接下來介紹下實踐中遇到的一些性能問題以及優化方案。如下對性能參數的依據是來自於React Native自帶的FPS Monitor.

  12. Attr、Style和Theme詳解

    這三個概念貫穿Android框架的方方面面,是Android程序設計中很重要的一環,理解它們,並能學以至用,不但可讓你的代碼變得簡潔明瞭,還可讓你的應用更加靈活。但目前網上資料對這塊介紹的知識點每每比較散,不是很系統全面,在此特以本身開發經驗總結此文一篇,但願能夠幫助初學者把這三個概念完全搞明白,開發出高質量的Android代碼。

  13. 深刻理解密碼技術

    DES是1977年美國聯邦信息處理標準中使用的一種對稱密碼技術,曾今被美國和其餘國家政府銀行使用。不過如今已被暴力破解,咱們除了用它解密之前的密文外,已再也不使用DES了。不過這裏咱們能夠用它來了解下什麼是對稱加密。

  14. Android 深刻理解Loader機制 讓APP輕裝上陣

    Android開發者都經歷過APP UI開發不當 會形成overDraw,致使APP UI渲染過慢,可是不少人卻沒聽過overLoad,overLoad通常是因爲開發者在主線程操做耗時操做,致使程序變慢 甚至出現的anr的現象,那麼android早已爲這種現象提供完美的解決方案,就是今天給你們說的Loader機制。

  15. 如何獲取Android系統中申請對象的信息(By ragnarok)

    最近一直在作有關內存方面的優化工做,在作優化的過程,除了關注內存的申請量以及GC的狀況以外,咱們常常須要想方法找出是那些對象佔用了大量內存,以及他們是如何致使GC的,這意味着咱們須要獲取對象申請的信息(大小,類型,堆棧等),咱們這篇文章來介紹下幾種獲取對象申請信息的方法

  16. Android JNI原理分析

    JNI(Java Native Interface,Java本地接口),用於打通Java層與Native(C/C++)層。這不是Android系統所獨有的,而是Java全部。衆所周知,Java語言是跨平臺的語言,而這跨平臺的背後都是依靠Java虛擬機,虛擬機採用C/C++編寫,適配各個系統,經過JNI爲上層Java提供各類服務,保證跨平臺性。

  17. Material Design技術分享

    因項目須要接觸了近一個月的Material Design,以前只以爲它美麗而神祕,真正接觸起來發現確實不錯。針對這段時間作個小總結,也給廣大戰友們分享點踩坑的經驗。第一部分是針對Material Design的我的總結,第二部分是近段時間接觸到符合Material Design風格的控件以及動畫總結。

  18. Android客戶端性能優化

    衆所周知,一個好的產品,除了功能強大,好的性能也必不可少。有調查顯示,近90%的受訪者會由於APP性能差而卸載,性能也是形成APP用戶沮喪的頭號緣由。那Android客戶端性能的指標都有哪些?如何發現和定位客戶端的性能問題?本文結合多個項目的開發實踐,給出了要關注的重要指標項目,以及定位和解決性能問題的通常步驟。

開源庫&項目

  1. RxUi

    Implementation of pure functional concept of talking to Android View layer in a Reactive way

  2. CalendarSelector

    一個日期顯示和選擇庫,能夠用來選擇一段連續的和多個不連續的日期,具體的UI徹底抽象出來了,能夠高度自定義

  3. MarqueeView

    垂直滾動的跑馬燈效果

  4. BubbleView

    一個帶箭頭的Android氣泡控件/容器類,支持在佈局中經過自定義屬性或代碼進行豐富的定製,包括箭頭朝向、箭頭位置、氣泡弧角、邊線顏色、邊線粗細、顏色填充、填充Padding等等

  5. Android-Material-Themes-Demo

    一個教你怎麼使用 Material Design 主題的 Demo

  6. TimePickerDialog

    Android時間選擇器,支持年月日時分,年月日,年月,月日時分,時分格式,能夠設置最小時間(精確到分)

  7. sailorcast

    一個面向Android設備的互聯網免費視頻播放客戶端。主要功能是快速的DLNA投射以及無廣告的本地播放

  8. android-easy-gcm

    Use this library to add GCM to your project, only in a few minutes

  9. EasyRecyclerView

    將開發中經常使用的RecyclerView的各類需求封裝進庫,而且adapter支持數據管理,Header與Footer添加,加載更多

  10. material-tip

    Android Library for prompt tip

工具

  1. JAADAS

    Joint Advanced Defect assEsment for android applications

  2. PsMirror

    一款實時預覽photoshop設計稿的工具。 它讓你極方便地在手機上查看PS中的設計稿, 提高設計效率。 支持android/ios兩個平臺, 支持wifi/usb兩種鏈接方式, 鏈接穩定響應速度快。

  3. eventbus3-intellij-plugin

    Plugin to navigate between events posted by EventBus

  4. quick-look-plugins

    幾個 Mac 下的用來快速預覽相關文件的插件

技術以外

  1. 如何打造工程師文化?

    我做爲面試官最喜歡問工程師的問題是要告訴我在他們之前的公司,他們喜歡和不喜歡的關於工程師文化的事。我採訪了500多人 - 其中許多來自頂尖高科技公司,如Facebook,谷歌,亞馬遜,Palantir,和Dropbox - 隨着時間的推移,這種面試問題也告訴我優秀工程師喜歡和儘可能避免地方。根據採訪答覆和我我的經驗,從過去七年跨越谷歌,Ooyala和Quora的工做,我總結了爲創建一個良好的工程文化一個團隊能夠作的十件事情。

相關文章
相關標籤/搜索