原创 Activity啓動過程源碼分析(Android 9.0) 一、主要類介紹 二、發起啓動請求 三、第一個Activity的onPause過程 四、新Activity create過程

一、主要類介紹 ActivityThread:App啓動的入口 ApplicationThread:ActivityThread的內部類,繼承Binder,可以進程跨進程通信。Activity啓動過程中主要與ActivityMana

原创 Picasso源碼解析 一、使用 二、重要的類 三、源碼分析

Picasso 是一個強大的圖片加載緩存框架 一、使用 Picasso.with(this) .load("url") .placeholder(R.drawable.leak_canary_icon)//佔

原创 EventBus源碼解析 一、EventBus對象創建 二、@Subscribe註解 三、訂閱register 發送事件post

EventBus是一個Android的事件發佈/訂閱框架 三個角色 Event:事件,它可以是任意類型,EventBus會根據事件類型進行全局的通知。 Subscriber:事件訂閱者,在EventBus 3.0之前我們必須定義以on

原创 OkHttp源碼解析 一、OkHttp同步網絡請求 二、OkHttp異步網絡請求 三、OkHttp的任務調度 四、OkHttp攔截器

一、OkHttp同步網絡請求 OkHttpClient client = new OkHttpClient.Builder().build(); Request request = new Request.Builder().url("ht

原创 Android性能優化工具:Systrace

一、Systrace概述 Systrace是一個平臺提供的工具,可以記錄設備活動。它將來自Android內核的數據(例如CPU調度程序,磁盤活動和應用程序線程)組合起來生成一個報告。該報告可幫助您改善您的應用或遊戲的性能。 Systrace

原创 Kotlin與Java的不同之處

伴生對象 在 Kotlin 中並不沒有 static 這個關鍵字,該如何處理呢?這裏需要用到 Kotlin 的伴生對象來處理。 類內部的對象聲明可以用 companion 關鍵字標記: class MyClass { compani

原创 Android內存優化工具:MAT

一、獲取HPROF文件 HPROF文件是MAT能識別的文件,HPROF文件存儲的是特定時間點,java進程的內存快照。有不同的格式來存儲這些數據,總的來說包含了快照被觸發時java對象和類在heap中的情況。由於快照只是一瞬間的事情,所以h

原创 Android內存優化工具:Memory Profiler

一、簡介 Memory Profiler 是 Android Profiler 中的一個組件,可幫助您識別導致應用卡頓、凍結甚至崩潰的內存泄漏和流失。 它顯示一個應用內存使用量的實時圖表,讓您可以捕獲堆轉儲、強制執行垃圾回收以及跟蹤內存分配

原创 Gradle基礎篇

項目和任務 Gradle中的所有內容都基於兩個基本概念:項目和任務。 每個Gradle構建都由一個或多個項目組成。項目代表什麼取決於您使用Gradle做什麼。例如,項目可能表示JAR或Web應用程序。 每個項目由一個或多個任務組成。任務代表

原创 Gradle插件

一、插件相關API PluginAware主要定義了插件相關API。 public interface PluginAware { PluginContainer getPlugins(); void apply(Closu

原创 Gradle概述

Gradle是一個開源的構建自動化工具,專注於靈活性和性能。Gradle構建腳本使用Groovy或Kotlin DSL 編寫。 高度可定製 - Gradle以一種可以以最基本的方式定製和擴展的方式建模。 快速 - Gradle通過重用

原创 Groovy從入門到精通

一、環境搭建 安裝好JDK環境 到groovy官網下載groovySDK,解壓到合適位置 groovy官網:http://www.groovy-lang.org/ 安裝後的文件如上圖所示,我們需要關注的是bin和doc文件夾下的內容,

原创 Kotlin學習筆記:習慣用法

使用可空值及 null 檢測 當某個變量的值可以爲 null 的時候,必須在聲明處的類型後添加 ? 來標識該引用可爲空。 如果 str 的內容不是數字返回 null: fun parseInt(str: String): Int? {

原创 Kotlin學習筆記:特殊類

一、數據類 我們經常創建一些只保存數據的類。在 Kotlin 中,這叫做 數據類 並標記爲 data: data class User(val name: String, val age: Int) 編譯器自動從主構造函數中聲明的所有屬性

原创 Kotlin學習筆記:類與接口

一、類 使用關鍵字 class 聲明類 class Invoice { ... } 類聲明由類名、類頭(指定其類型參數、主構造函數等)以及由花括號包圍的類體構成。類頭與類體都是可選的; 如果一個類沒有類體,可以省略花括號。 構造函數 在