原创 第一行代碼學習筆記第七章——探究內容提供器

知識點目錄 7.1 內容提供器簡介 7.2 運行權限 * 7.2.1 Android權限機制詳解 * 7.2.2 在程序運行時申請權限 7.3 訪問其他程序中的數據 * 7.3.1 ContentResolve

原创 冒泡排序、插入排序、選擇排序

在平時的項目中,我們遇到最多的算法應該就是排序了。其中最經典、最常用的算法有:冒泡排序、插入排序、選擇排序、快速排序、歸併排序、基數排序等。 1. 評判排序算法的標準 排序算法有很多種,那麼我們該如何評判一個排序算法呢?一般情況下

原创 生成和合入patch的兩種方式

在平時有代碼移植或合入芯片廠商或板卡商的代碼時,我們就可能要用到打補丁技術。 1. 兩種補丁方案 Git提供了兩種補丁方案,分別patch和diff。 diff git diff 生成的是UNIX標準補丁.diff文件。只會記錄文

原创 屏蔽Crash 提示框的兩種方式

在Android應用開發的過程中,有時候我們總覺得自己寫的代碼天衣無縫,根本不會有bug。。。(一切都是幻覺),但在後期的版本迭代中總會讓你猝不及防的報各種crash,我們稱之爲“崩潰”。出錯的原因一般都千奇百怪。 在《結合源碼深

原创 結合源碼深入理解Android Crash處理流程

應用程序crash在開發過程中還是很常見的,本文主要是從源碼的角度去跟蹤下Android對於crash的處理流程。App crash的全稱:Application crash。而Crash又分爲:native crash和fram

原创 從源碼角度看Android系統Launcher在開機時的啓動過程

Launcher是Android所有應用的入口,用來顯示系統中已經安裝的應用程序圖標。 Launcher本身也是一個App,一個提供桌面顯示的App,但它與普通App有如下不同: Launcher是所有應用的入口,可以管理應用

原创 從源碼角度看Android系統SystemServer進程啓動過程

SystemServer進程是由Zygote進程fork生成,進程名爲system_server,主要用於創建系統服務。 備註:本文將結合Android8.0的源碼看SystemServer進程的啓動過程以及SystemServe

原创 從源碼角度看Android系統Zygote進程啓動過程

在Android系統中,DVM、ART、應用程序進程和SystemServer進程都是由Zygote進程創建的,因此Zygote又稱爲“孵化器”。它是通過fork的形式來創建應用程序進程和SystemServer進程,由於Zygo

原创 遞歸

遞歸是一種應用非常廣泛的算法(或者編程技巧)。也是很多數據結構和算法編碼實現的基礎。比如DFS深度優先搜索、前中後序二叉樹遍歷等等,所以搞懂遞歸是學習後面複雜的數據結構和算法的前提條件。 1. 理解遞歸 遞歸在我們的生活中也是很常見的

原创 數據結構——隊列

隊列也是一種數據結構,今天我們主要學習幾種基本的隊列,然後學習下隊列在線程池中的應用。 1. 什麼是隊列? 隊列具有“先進先出,後進後出”的特點。支持操作的也有限,最基本的操作也只有兩種: 入隊enqueue():放一個數據到隊列

原创 數據結構——棧

棧是一種數據結構,今天我們先來理解下棧的定義,然後再看幾個在現實開發中運用到的實例。 1. 什麼是棧? 棧是一個具有“先進後出、後進先出”這種特點的數據結構。 從棧的結構圖中可以看出,棧是一種“操作受限”的線性表,只允許在一端插

原创 從源碼角度看Android系統init進程啓動過程

init進程是Linux系統中用戶空間的第一個進程,進程號爲1。Kernel啓動後,在用戶空間啓動init進程,並調用/system/core/init.cpp中的main方法執行一些重要的工作。 備註:本文將結合Android8.0

原创 數據結構——鏈表

鏈表也是一種數據結構,相比較於數組,略顯複雜。鏈表和數組都是非常基礎、非常常用的數據結構。 1. 數組與鏈表的區別 從底層的存儲結構上看,二者申請的內存空間不一樣: 數組需要一塊連續的內存空間來存儲,對內存要求較高。 鏈表不需

原创 數據結構與算法書籍推薦

學習數據結構與算法,還是很有必要看幾本相關的書籍,但根據不同基礎的人,合適看的書也不一樣,因此,針對不同層次、不同語言的人,推薦幾本市面上口碑不錯的書。 1. 入門級 針對剛入門的同學,建議不要急着去看那些經典書,像《算法導論》、《算

原创 數據結構——數組

數組不僅是編程語言中的一種數據類型,也是最基礎的數據結構。 1. 數組的基本概念 數組(Array)是一種線性表數據結構。它用一組連續的內存空間,來存儲一組具有相同類型的數據。 1.1 線性表 線性表就是數據排成像一條線一樣的結構。每