原创 新建你的packages——學會切蛋糕

朋友過生日請你幫TA分蛋糕,在座的有年輕人、小孩、老人、男人、女人,你會怎麼分?有以下幾個選擇:   1.    不要分了,把整個蛋糕分給大家; 2.    平均分配,每人吃一樣多; 3.    按照各類人羣的食量和愛好合理分配。 顯然,

原创 關於android底層庫編譯出現“undefined reference to `__android_log_print'”的解決方法

問題描述: 很多時候,我們需要在自己的android應用程序中調用到其它語言(C)編寫的高效率底層模塊,一般通過 System.loadLibrary(libname) 來實現,同時我們還需要調試這個用C寫的庫,在 .c 源文件中打印 l

原创 自定義SearchView

1. 基本原理: SearchView是android中一個搜索框組件,它不是一個單獨的view,而是一個LinearLayout佈局,包括表示Search圖標和清除圖標等其它圖標的imageView、具有下拉建議列表的AutoCompl

原创 通過RelativeLayout.LayoutParams.addRule()方法在代碼中設置RelativeLayout相關屬性

1. 原理說明: 我們知道,在 RelativeLayout 佈局中有很多特殊的屬性,通常在載入佈局之前,在相關的xml文件中進行靜態設置即可。 但是,在有些情況下,我們需要動態設置佈局的屬性,在不同的條件下設置不同的佈局排列方式,這時

原创 我答知乎:網頁的側邊欄應該放在左邊還是右邊?

問題: 大多數的網站都把側邊欄放在了左邊,也有部分網站把側邊欄放在了右邊,那麼到底哪種更合適呢?如何考慮哪些內容放在什麼位置? 我答: @Dadastan 提到了左撇子、右撇子的問題,很有意思,不過我認爲恰恰應該是:左撇子右邊、右撇子左

原创 不要通過終止進程的方式清理內存

通過終止進程來清理內存的方案是不合適的,理由如下: 1、 android 有自身的進程和內存管理機制,其設計規範是要保證程序儘可能快地啓動,這就要求程序退出後仍然佔用內存保存數據; 2、 android 的內存管理策略保證在新程序載

原创 Handler, Message, MessageQueue, Looper —— 吸血鬼和狼人之戰的情報網絡

1. 吸血鬼和狼人之戰 在討論 Handler 機制之前,我們先來講一個故事: 吸血鬼和狼人打仗,戰爭進入僵持階段,吸血鬼兵團爲了打探狼人軍團的動靜,決定派遣一名密探潛入狼人軍團內部刺探軍情,同時命令一名吸血鬼聽風者守候在家門口等待

原创 關於在 Service 或 BroadcastReceiver 中 startActivity 的問題

1. 不從後臺啓動 Activity 準則: 在谷歌的 Android API Guides 中,特意提醒開發者不要在後臺啓動 activity,包括在 Service 和 BroadcastReceiver 中,這樣的設計是爲了避免

原创 git 解決衝突問題

提交代碼後,如果出現衝突,將無法 rebase,將衝突的文件修改之後,接下來進入如下幾步: git add XXX(衝突的文件) git rebase --continue 按正常程序提交代碼

原创 何時使用 String, StringBuffer, StringBuilder

性能分析: 在進行字符串串聯操作時(串聯的不光是字符串類型)我們有三種選擇: 採用 String 的 '+' 操作符;採用 StringBuffer.append() 方法;採用 StringBuilder.append() 方法;

原创 淺探 Notification sound 的焦點管理

1. 通知播報流程分析: Android 中用 NotificationManager 處理通知事務,在構建 Notification 時,一般會傳入一個音頻地址給其中的 sound 字段進行播報,而播報的處理是通過啓動 com.an

原创 自定義 Preference Header 佈局

1. Preference Header 概述: 對於什麼是 Preference Header,以及何時使用 Preference Header,請參考我的另一篇博文:何時使用 Preference Headers 2. 自定義

原创 Wheel ProgressBar 實現之三——模擬進度過程

1. 效果展示: 知道如何畫圓弧,如何精確畫出進度文本之後,我們將進入 Wheel ProgressBar 實現的最後一個過程:模擬其動態呈現過程。如下圖所示,初始時顯示進度爲 0 (上圖),點擊進度條後,將自動減速加載(下圖),每次點擊

原创 Multithreading For Performance

轉載自:http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html A good practice in creating r

原创 在後臺線程中執行數據庫查詢

不可否認,從外存中讀取數據相對直接從內存讀取是耗時的,尤其是批量從數據庫中加載數據時,如果直接在 UI 線程中完成,輕則導致界面延遲加載,嚴重時可導致 ANR。本章又一次重申了在後臺線程中執行耗時工作的重要性。          在這裏,