原创 【面試常見算法整理】Binary Indexed Tree(Fenwick Tree,樹狀數組)詳解

問題:求一個數組中連續n項的和。 首先想到的肯定是做一個循環,把這個連續的n項加起來,時間複雜度爲O(n)。複雜度爲n,看起來還不錯,再說了求n個數的和,怎麼也要加n次吧,所以說這應該就是最優解了,但是一提交結果是Time Lim

原创 開源項目9GAG源碼解析與Material改造(三)

前面兩篇文章分別講解了9GAG中的UI佈局和網絡通信兩個部分,本文重點講解項目的最後一個部分——數據緩存,在APP的使用過程中好像感覺不到數據緩存的存在,但是如果沒有數據緩存的話,項目的運行速度,耗電,流量等方面就會差很多。數據的

原创 Android中MVP模式與MVC模式比較(含示例)

原文鏈接 http://sparkyuan.me/ 轉載請註明出處 MVP 介紹 MVP模式(Model-View-Presenter)是MVC模式的一個衍生。主要目的是爲了解耦,使項目易於維護。 Model 依然是業務邏輯和實

原创 Android中使用RecyclerView和CardView實現瀑布流效果(StaggeredGrid)

在Android 5.0 中引入了Material Design的設計理念,並加入了RecyclerView和CardView兩個控件。本文就講解如何使用者兩個控件來實現瀑布流效果(StaggeredGrid)。 先上效果圖 R

原创 開源項目9GAG源碼解析與Material改造(二)

上一篇文章主要講解了9GAG中的UI部分,這篇文章主要講解客戶端與服務器的數據交換。項目中的數據交換主要使用了Volley這個開源項目,關於Volley的講解可以查看我之前寫的博客,除了Volley以外,還使用了Universal

原创 Android中AsyncTask基本用法與源碼分析(API 23)

原文鏈接 http://sparkyuan.github.io/2016/03/23/AsyncTask源碼剖析(API 23)/ 轉載請註明出處 Android的UI是線程不安全的,想在子線程中更新UI就必須使用Android的異步操

原创 Android中View的滑動衝突——Android開發藝術探索筆記

原文鏈接 http://sparkyuan.me/ 轉載請註明出處 介紹 相信開發Android的人都會有這種體會:從網上下載的demo運行的好好的,但是隻要出現了滑動衝突,Demo就無法正常工作了。但是不用擔心,解決滑動衝突有固定的模式

原创 【通知】本博客遷移到 http://sparkyuan.me/

通知 折騰了一下午,終於通過 GitHub Pages + Hexo 搭好了屬於自己的網站。雖然花了29塊買了個域名,又選了好2個小時的主題,不過最終的結果還是很滿意的。 想查看最新的文章請訪問:http://sparkyuan.me/

原创 Android的線程和線程池

原文鏈接,轉載請註明出處 http://sparkyuan.me/2016/03/25/Android的線程和線程池/ 在Java中默認情況下一個進程只有一個線程,也就是主線程,其他線程都是子線程,也叫工作線程。Android中的主線程

原创 JVM運行時數據區域分析

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分爲若干個不同數據區域。這些區域都有各自的用途,以及創建和銷燬的時間,有的區域隨着虛擬機進程的啓動而存在,有些區域則是依賴用戶線程的啓動和結束而建立和銷燬。 原文鏈接:http

原创 從源碼的角度理解四大組件的工作過程——Android開發藝術探索筆記

原文鏈接http://sparkyuan.me/2016/03/14/四大組件的工作過程/ 轉載註明出處 系統對四大組件的過程進行了很大程度的封裝,日常開發中並不需要了解底層的工作原理,那麼研究這些原理的意義在哪裏呢? 如果你想在技術上

原创 一個特別適合新手練習的Android小項目——每日一妹紙

原文鏈接 http://sparkyuan.me/ 轉載請註明出處 介紹 當前版本V 1.2 剛開始學習Android的時候,主要就是學習了一些Activity的生命週期,各種View和Layout的使用,SQLite等零散的知識點,這些

原创 Android中IntentFilter匹配規則詳解——Android開發藝術探索筆記

原文鏈接http://sparkyuan.me/ 轉載請註明出處 啓動Activity的方式分爲兩種,顯示和隱式調用。顯示調用很簡單,直接指明要啓動的Activity就可以了,這裏主要介紹一下隱式調用。隱式調用需要Intent能夠匹配

原创 ViewRoot,DecorView,MeasureSpec和View的工作原理——Android開發藝術探索筆記

原文鏈接 http://sparkyuan.me/ 轉載請註明出處 View的繪製流程是從ViewRoot的performTraversals方法開始的,它經過measure、layout和draw三個過程才能最終將一個View繪製出來,

原创 Android中常見IPC方法總結——Android開發藝術探索筆記

歡迎轉載,轉載請註明出處http://blog.csdn.net/l664675249/article/details/50654926 IPC (Interprocess communication)跨進程通信,是指在兩個進程之間交換數