Android開發技術周報 Issue#104
新聞
教程
-
記一次 StackOverflow 崩潰分析: Proguard 5.3 錯改指令
近期工作主要在細化項目的proguard混淆規則, 簡單的去掉一些暴力keep, 可以減少項目1k+的方法數. 在刪除某些配置之后, 盡管我知道對功能沒有影響, 還是會去測一下功能是否正常. 于是就遇到了一個隱藏在主干上的StackOverflow崩潰。從堆棧上看, 匿名內部類的run調MyApp.startActivity, MyApp.startActivity又new了一個Runnable, 它的run繼續調MyApp.startActivity, 最終棧溢出. 看了堆棧, 還以為是一個簡單的問題, 直接去找到了代碼.
-
Android MotionEvent 詳解,之前用了兩篇文章 事件分發機制原理 和 事件分發機制詳解 來講解事件分發,而作為事件分發主角之一的 MotionEvent 并沒有過多的說明,本文就帶大家了解 MotionEvent 的相關內容,簡要介紹觸摸事件,主要包括 單點觸控、多點觸控、鼠標事件 以及 getAction() 和 getActionMasked() 的區別。
Android 將所有的輸入事件都放在了 MotionEvent 中,隨著安卓的不斷發展壯大,MotionEvent 也開始變得越來越復雜,
-
本文會主要講解Android系統對于進程優先級的管理。優先級反應了系統對于進程重要性的判定。當系統剩余內存很低的時候,系統便會按照進程的優先級倒序殺死進程以回收內存。關于系統如何回收進程我們會在后面的文章中講解,本文主要講解系統對于進程優先級的判斷依據和計算方法。在Processes and Threads (如果你還沒有閱讀,請立即閱讀一下這篇文章)一文中,我們已經了解到,系統對于進程的優先級有如下五個分類:前臺進程、可見進程、服務進程、后臺進程、空進程,這只是一個粗略的劃分。其實,在系統的內部實現中,優先級遠不止這么五種。
-
在以往的Android系統上,所有Activity都是全屏的,如果不設置透明效果,一次只能看到一個Activity界面。但是從Android N(7.0)版本開始,系統支持了多窗口功能。在有了多窗口支持之后,用戶可以同時打開和看到多個應用的界面。并且系統還支持在多個應用之間進行拖拽。在大屏幕設備上,這一功能非常實用。本文將詳細講解Android系統中多窗口功能的實現。
-
DataBinding 技術的出現,肯定是為了解決我們在開發中的一些痛點問題。所以,了解 DataBinding 要解決的問題,能夠使我們更深刻地理解 DataBinding 技術的設計實現。從開發角度看,簡言之,DataBinding 主要解決了兩個問題:1.需要多次使用 findViewById,損害了應用性能且令人厭煩 2.更新UI數據需切換至UI線程,將數據分解映射到各個view比較麻煩,應該說,針對上述問題,都有第三方解決方案。第一個問題可以使用 Jake Wharton 的 ButterKnife;對于第二個問題,谷歌提供了 Loop-Handler 方案,你還可以使用 RxJava,EventBus 等方案,但它們只是解決了線程切換的問題,卻沒有解決將數據分解映射到各個view的問題,這正是 DataBinding 的魅力所在!
-
第一次在項目中要用到全屏功能的時候無從下手,然后就是去百度了。百度到的結果都是差不多的。不過直接把代碼貼過來的確是可以用的。但是除了知道怎么做之外還想去理解它,因為只有理解了才能舉一反三嘛。好在在后來的時候看到了官方的文檔,寫的非常詳細。
-
Activity組件是用戶唯一能看見的組件,作為軟件所有功能的顯示載體,其安全性不言而喻。針對Activity組件安全,作為一個安卓開發者來講需要在日常開發過程中注意兩點:1.Activity訪問權限的控制 2.Activity被劫持,本篇文章將分享Activity訪問權限控制方面的安全問題,首先科普下基礎知識,Activity類型和使用方式決定了其風險和防御方式,故將Activity分類如下: Private、Public、Parter、In-house, Android中提供了Intent機制來協助應用間的交互與通訊,Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,并完成組件的調用。
-
Android客戶端網絡請求是每一個應用都不可或缺的模塊,其設計的好壞直接影響應用的性能和代碼穩定性、擴展性。Android網絡請求最開始官方只提供了最基礎的方法,開發者必須在此基礎上進行二次封裝,這樣就要求開發者對Http請求協議、緩存、JSON轉換、錯誤處理以及線程切換等都比較熟悉,穩定性、可擴展性和可維護性都是比較大的挑戰。
-
SurfaceView 是 Android 中一種比較特殊的視圖(View),它跟平時時候的 TextView、Button 最大的區別是它跟它的視圖容器并不是在同一個視圖層上,它的 UI 顯示也可以不在一個獨立的線程中完成,所以對 SurfaceView 的繪制并不會影響到主線程的運行。綜合這些特點,SurfaceView 一般用來實現動態的或者比較復雜的圖像還有動畫的顯示。
開源庫 & App
-
一個簡單的,方便的多屏適配的Android庫
-
仿打字機效果
-
A raised button that lowers down to 0dp of elevation
-
FloatingView can make the target view floating above the anchor view with cool animation
-
SquareMenu is a custom Floating Action Button with a different shape from traditional FABs and with three sub menu buttons.
-
一個用 Kotlin 寫的 推ter 客戶端
-
Yalantis 開源的一個很贊的搜索框過濾效果
-
Yet another Sketch Mirror App for Android.
-
一個管理安卓手機的應用,支持安卓7.0
-
又一個Mvp庫,超級簡單,但有足夠的功能
-
一個功能強大的TextView,可以滿足日常大部分布局方式,開發者可已自行組合屬性配置出屬于自己風格的樣式
-
a DNS based ad blocker for Android.
-
可設置圓角背景邊框的的按鈕
工具
-
Mac 上輕量級 GIF 錄屏小工具
-
Scouter is an open source APM and an open source profiler for java application like web applications on a tomcat .
活動
-
Google Developer Day China 2016
Google 開發者大會是一個互動交流的大會,旨在與開發者們和科技行業領先者們分享 Google 的最新科技和開放平臺。今年,Google 開發者大會將于12月8日和12月14日分別在北京和上海舉辦。我們非常高興與你分享創新科技,并且鼓勵開發者們去建立下一個偉大的移動網絡或本地應用。這不僅是創新科技的互聯網時代,更是屬于每一位開發者的時代。
設計
-
設計師都知道,設計不只是為了好看。設計也決定用戶如何融入一個產品,無論是網站還是app。這是一種交談。導航就是一種交談。因為如果用戶不明白使用方式,你的網站或app再漂亮都沒用。
來自:http://www.androidweekly.cn/android-dev-weekly-issue-104/