原创 Android Framework 編譯環境 分析

Android編譯過程 1. 初始化參數設置 2. 檢查環境變量和目標環境 3. 選擇lunch並讀取目標配置和平臺信息 4. 清空輸出目錄 5. 編譯 6.生成升級包   1. .build/envsetup.sh 分析 1. 加載編譯

原创 分析第一個Android.mk

概述 Android.mk這個文件可以放在Android的某一個目錄下,就可以使用mm或者其他一些命令來對它進行編譯。   Android.mk的作用 對於 C/C++ 來說,可以編譯二進制的可執行文件、靜態庫、動態庫; 對於 Java

原创 Android.mk 之 編譯生成

如何使用Android.mk編譯生成apk? LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) //all-subdir-java-files 把底層所有java文件取到 LOCAL_

原创 Java虛擬機 之 虛擬機工具

1. jps(Java Process Status) 故名思義,就是Java進程的狀態,就像是把j(java)去掉,就是ps命令,是Linux中查看進程狀態的一樣。 這個就是在命令行中輸入jps。 現在兩個進程,下面的PID685是j

原创 2019 下半年 總結

今晚就是聖誕節了,依然是自己一個人,加班,回家,躺那個冰冷的牀上。 這時候不如來做做這小半年的總結,展望下這個2020年。 關於專業 這下半年,一直在做5660和6886的工廠模塊,雖然每天還是以解bug爲主,但是每天都在做筆記,記錄每天

原创 序列化 : Serializable 與 Parcelable ( 上 )

序列化 想要在intent上傳輸對象的時候,直接傳輸是做不到的,需要對這個對象處理一下,而這個處理的過程,就叫做序列化。 關於序列化的定義,百度百科這樣定義: 序列化 (Serialization)是將對象的狀態信息轉換爲可以存儲或傳輸

原创 okhttp框架 同步請求流程和源碼分析

創建Client的外部調用 OKHttpClient client = new OkHttpClient.Builder().readTimeOut(5,TimeUnit.SECONDS).build(); 先來看下OkHttpClie

原创 Android.mk 之 引入庫

如何在代碼中引入系統庫? 假如目前有這樣一份文件: #include<stdio.h> #define LOG_TAG "Main" #include <utils/Log.h> int main(void) { ALOGE("

原创 算法 中的 散列表(哈希表)

散列表又叫做哈希表(Hash Table),是一種提供了鍵(Key)值(Value)映射關係的一種數據結構。 只要給出一個Key值,就可以快速匹配出Value值。正是因爲這個特性,比如有一本詞典,它就可以給出一個單詞,去快速找出它的解釋。

原创 算法 中的 棧和隊列

什麼是棧? 棧是一種線性的數據結構,只能遵循“先入後出”的原則。“先入後出”也就是First In Last Out,簡稱FILO,也就是最先進入棧的原則需要最後出棧的元素,這個最早進入棧的元素存放位置叫棧底,最後進入的元素存放的位置叫做

原创 Binder的基本原理

多進程有哪些優點? 多進程一般在webView、圖片加載、推送、鬧鐘之類的比較常見,還有比如在使用getSystemService獲取系統服務的時候,雖然在自己寫的代碼中沒有發現多進程,其實在內部實現中也是多進程。 它們爲什麼需要被做成多

原创 Handler中Looper死循環爲什麼不會導致應用卡死?

應用卡死,也就是ANR所產生的原因? 1、5秒鐘之內沒有響應輸入的事件,比如按鍵、屏幕觸摸等。 2、廣播接收器在10秒內沒有執行完畢。   爲什麼說應用所有的操作都是在loop()中來管理? 首先,我們的每一個應用都存在於自己的虛擬機中,

原创 Handler往MessageQueue中添加數據,消息隊列是怎樣變化的?如何保證線程安全的?

多個Handler往MessageQueue中添加數據,其內部是如何保證線程安全的? Handler是一個線程間通信的機制,很多消息都會從子線程發送至主線程,而主線程只有一個Looper,發送的消息都被放置在MessageQueue這個隊

原创 子線程中:new Handler需要做哪些準備?消息隊列中無消息的時候,Looper的處理方案是什麼?

爲什麼主線程可以new Handler? 在ActivityThread.java裏有一個main()函數,它是Android每一個應用最早執行的函數。 public static void main(String[] args

原创 Handler內存泄漏的原因是什麼?爲什麼其他內部類沒有這個問題?

Handler爲什麼會內存泄漏? 內部類持有了外部類的引用。 Handler handler = new Handler() { @Override public void handleMes