原创 Android性能優化案例研究(下)

目錄[-] 去掉冗餘的圖層 重要: 去掉桌面背景: 進一步去掉重繪 一句建議: Activity名字: 未來的優化: 扁平化View的層級 如何扁平化你的界面: 關於輸入事件? 現在輪到你了! 提示: 譯者前言:在Androi

原创 Android獲取圖片指定大小的縮略圖--inJustDecodeBounds的使用

在開發圖片瀏覽器等軟件是,很多時候要顯示圖片的縮略圖,而一般情況下,我們要將圖片按照固定大小取縮略圖,一般取縮略圖的方法是使用BitmapFactory的decodeFile方法,然後通過傳遞進去BitmapFactory.Option

原创 android input子系統詳解

  Input子系統是一個龐大的系統,爲了簡單明瞭的介紹該系統,我們採用分模塊以及倒序追蹤的方式來一步步解開它的面紗。   一、java層事件傳遞過程                我們從這個button被點擊來研究input子系統中事

原创 android屬性動畫小結

  一直以來都沒有用屬性動畫,認爲可以靠postDelayed()一個任務來不斷invalidate這個view從而實現動畫效果。 但是今天發現使用屬性動畫會更流暢    public void rotateyAnimRun(final

原创 windows7下virtualBox配置識別usb

在windows7下安裝virtualBox後,在虛擬機裏面是不能識別手機的,此時我們需要做一些配置。 一. virtualBox菜單: 管理–全局設定–擴展–添加包(右側,virtualBox extension pack在o

原创 watchdog殺死system_server導致系統重啓問題分析流程

下面是最近在解一個monkey測試過程中系統重啓的bug的分析過程,從這裏我們可以看一下對於watchdog殺死死鎖進程的一般分析流程。(這裏當是一個筆記,沒有詳細按着文章的邏輯來整理詞彙和語句 汗汗汗) 1. watchdog:

原创 view invalidate流程

  view.invalidate---viewparent.invalidateInparent---ViewRootImpl.invalidateInparent---ViewRootImpl.scheduleTraversals--

原创 重磅整理---Android進程保活組件

github地址: https://github.com/stephen8341/KeepProcLive 這裏面集成的方案包括: 1.  Service指定爲START_STICKY 被系統回收的進程會被系統重新拉起 2.  S

原创 android性能問題---項目實戰

1. HandlerThread導致oom      背景:自動化測試過程中,每一個用例task裏面會啓動一個HandlerThread,但是HandlerThread是在task構造函數裏面啓動,而不是onStart裏面啓動,這樣就導致

原创 Sqlite線程安全

  sqlite是線程安全的,是指寫線程安全,這裏面是由SqliteConnection保證的,即一個database只有一個connection可以使用,所以天生是安全的。但是如果實在想支持多線程併發訪

原创 struct 的長度對齊

結構體的sizeof的值並不是簡單的將其中各個元素所佔的字節相加,而是要考慮到存儲空間的字節對齊問題 結構體默認的字節對齊準則: 1.           結構體變量的首地址能夠被其最寬基本類型成員的大小所整除; 2.      

原创 從mms源碼看IM應用的架構<二>

Action+ IntentService架構   這一部分給大家總結一下mms裏面對於後臺任務的處理。正常情況下,一個互聯網應用可能會涉及到n多的後臺任務要運行,短信應用也不例外,例如插入短信到數據庫,刪除短信,標記爲已讀,發送短信,接

原创 tcp協議之我理解

1.有連接,可靠傳輸,數據按序到達的TCP 2. 爲何建立連接是3次握手,而拆除連接是4次揮手。    3次握手的目的很簡單,就是分配資源,初始化序列號,這時還不涉及數據傳輸,3次就足夠做到這個了,而4次揮手的目的是終止數據傳輸,並

原创 快慢指針的時間複雜度探究

  對於“訪問單向鏈表倒數第k個結點”,比較成熟的算法是快慢指針,即定義兩個指針,一個指針先走k個結點,之後兩個指針再一起走,從而拿到倒數第k個結點。 快慢指針算法如下: LinkNode* findNode(LinkNode* h

原创 canvas的save restore clipRect方法解析

   之前對canvas的這幾個方法一直不是很清楚,今天花點時間總算搞明白了。   1.save restore方法成對出現,用於保存恢復畫布canvas,比如需要臨時rotate canvas來畫一些東西,畫完之後再rotate回來畫其