原创 Android圖片系列-2.Android App圖片壓縮、裁剪分析整理

移動端常用的圖片格式有PNG和JPEG,目前ios手機和大部分安卓手機拍照生成的圖片默認格式都是JPEG。我們開發APP的時候通常使用的是PNG,這可能是考慮到圖片質量效果。PNG圖片是無損壓縮格式,JPEG是有損壓縮,PNG格式

原创 HTTP 常見問題總結

什麼是http協議 誕生背景:1989年3月歐洲核子研究組織的Tim Berneer-s Lee提出共享知識的思想,引出WWW(World Wide Web)。WWW三項基礎技術:頁面文本標記語言html,文檔傳遞協議http,文

原创 android 圖片加載框架-內存緩存

概述 緩存可以提高圖片加載效率,針對數據源來自網絡的圖片,還可以減少帶寬。緩存一般情況分兩類:內存緩存、磁盤緩存。本章主要介紹內存緩存。 怎麼來擼一個內存緩存,hashmap?軟引用?大小限制?回收規則?一堆的基礎需求浮現在了腦海

原创 Android App 架構設計

簡介 本文是對谷歌原生文檔的翻譯,僅供學習參照。 原文鏈接 此文檔寫給希望學習最優編程實踐和架構以開發健壯、高質量APP的開發者。 開發者常遇到的問題 傳統的桌面程序大多數使用場景是有一個啓動入口,作爲一個獨立進程運行。Andro

原创 TCP 2MLS

MSL背景 TCP建立連接三次握手,斷開連接四次分手。 如上圖所示,在四次分手過程,TIME_WAIT狀態也被叫做2MSL等待狀態。 MSL,the maximum segment lifetime。segment可以在網絡中存

原创 Android開源圖片加載框架選擇

功能描述:加載本地磁盤存儲的大量圖片,以列表縮略圖的格式呈現,點擊其中一張圖展示大圖。 其他功能需求: 支持自動旋轉 內存、磁盤緩存。 支持gif 支持resize 支持bitmap格式定義。argb8888,rgb565 支

原创 TCP Keepalive Timer

簡介 TCP Keepalive是一有爭議的特徵,不是TCP規範的一部分。目前協議專家仍然爭論是否屬於傳輸層範圍,或者應該納入應用層協議來處理。 特徵 tcp keepalive具有檢測死連接的作用。但是有一些缺陷: Kee

原创 jvm虛擬機基本概念

1. JVM 運行時數據區域 1 方法區 保存類信息、常量、靜態變量 2 程序計數器 虛擬機字節碼指令的地址 3 java棧 描述java方法內存模型,包括局部變量、操作數棧、動態鏈接等信息。局部變量包括類型:boolean

原创 Android Hook 一 Hook CloseGuard

一、拋出問題 在上一篇 dalvik.system.CloseGuard 介紹了CloseGuard的原理和作用,並在文中提到 APP端可以利用Hook REPORTER 在來實現客製化的上報提示信息 本章通過代碼來學一下怎樣Ho

原创 Gradle學習三 :AS自定義Gradle插件

一、定義插件 1.File-New Module-Android Library,取名plugin1 2.刪除plugin1目錄下所有文件,只保留build.gradle 編寫build.gradle,代碼如下: apply plug

原创 聲紋識別調研

1. 基礎概念 聲紋(Voiceprint),是用電聲學儀器顯示的攜帶言語信息的聲波頻譜。 現代科學研究表明,聲紋不僅具有特定性,而且有相對穩定性的特點。成年以後,人的聲音可保持長期相對穩定不變。實驗證明,無論講話者是故意模仿他人聲音

原创 dalvik.system.CloseGuard 介紹

CloseGuard is a mechanism for flagging implicit finalizer cleanup of resources that should have been cleaned up by e

原创 Android Surface顯示系統框架一概覽

基於Android7.1源碼和相關資料畫了APP UI繪製顯示的大致框架。 涉及安卓系統全棧內容: APP層 framework層(WMS) native層(SurfaceFlinger) HAL層(hwcomposer/gral

原创 Linux 進程通信-共享內存Shmem示例

共享內存函數由shmget、shmat、shmdt、shmctl四個函數組成。 關於具體使用的問題可以問男人: man shmget man shmmat man shmmdt man shmctl 代碼示例: 用gcc編譯 gcc

原创 Dalvik虛擬機內存碎片測試分析

《移動App性能評測與優化》第一章1.3.3介紹了優化Dalvik內存碎片。文中列舉了一段代碼,可能會在GC後引起內存碎片問題,代碼如下: private Object result[] = new Object[100]; void