原创 ANR源碼分析之InputDispatcher Timeout

  在上篇文章中,介紹ANR產生的原因、ANR的分類以及ANR問題的分析。本篇文章接下來將從源碼的角度來分析ANR產生的過程,首先介紹InputDispatcher Timeout產生的過程。在ANR產生時,最終都會調用到appNotRe

原创 ANR問題淺析

  我們在Android應用開發中,會經常遇到ANR問題。本文將從ANR產生的原因、ANR的分類、ANR問題的分析、ANR問題的常見解決辦法這幾個方面來介紹ANR。最後會通過分析ANR源碼,瞭解ANR產生的過程。 一、ANR簡介   

原创 JobScheduler簡介

JobScheduler機制簡析 1.概述 JobScheduler主要用於在未來某個時間下滿足一定條件時觸發執行某項任務的情況,那麼可以創建一個JobService的子類,重寫其onStartJob()方法來實現這個功能。 JobSch

原创 AbstractQueuedSynchronizer框架淺析

AbstractQueuedSynchronizer框架淺析 1.概述 AbstractQueuedSynchronizer(AQS)抽象類提供一個實現阻塞鎖和依賴於FIFO等待隊列的同步器的框架。 AQS被設計用來作爲衆多同步器的基類

原创 InputManagerService分發輸入事件給應用程序(上)

InputManagerService分發輸入事件給應用程序(上) InputManagerService分發輸入事件給應用程序上 簡介 源碼分析 小結 1.簡介 在InputManagerService服務初始化時,會

原创 InputManagerService分發輸入事件給應用程序(下)

InputManagerService分發輸入事件給應用程序(下) InputManagerService分發輸入事件給應用程序下 簡介 源碼分析 總結 1.簡介 在InputManagerService分發輸入事件消息

原创 輸入事件ANR原理分析

輸入事件ANR原理分析 輸入事件ANR原理分析 簡介 源碼分析 總結 1.簡介 當輸入事件長時間未響應,則會發生ANR。輸入事件ANR超時時間一般爲5s。在InputDispatcher分發輸入事件的過程中,會監控是否發

原创 LeakCanary

LeakCanary原理淺析 1.LeakCanary簡介 LeakCanary是一個Android和Java的內存泄漏檢測庫,可以大幅可以大幅度減少了開發中遇到的OOM問題。 LeakCanary開源庫的地址爲:LeakCanary開源

原创 應用程序註冊輸入事件通道

應用程序註冊輸入事件通道 應用程序註冊輸入事件通道 簡介 源碼分析 通過requestLayout函數更新InputManagerService中激活的Activity窗口 把Server端輸入事件通道註冊到InputDispatc

原创 Java異常

Java異常 Java異常 概述 基本異常 捕獲異常 1 try塊 2 異常處理程序 創建自定義的異常 異常說明 捕獲所有異常 1 棧軌跡 2 重新拋出異常 3 異常鏈 Java標準異常 使用finally進行清理 異常丟失

原创 Touch Event事件分發流程

Touch Event的分發 Touch Event的分發 Activity的dispatchTouchEvent方法 PhoneWindow的superDispatchTouchEvent方法 ViewGroup的dispatch

原创 InputManagerService服務的初始化

InputManagerService的初始化 InputManagerService的初始化 簡介 初始化流程 總結 1.簡介 Android系統的輸入事件是由InputManagerService服務來監控的,而In

原创 智能指針

智能指針 智能指針 簡介 強指針sp 弱指針wp 重要函數實現 總結 1.簡介 1.指針問題的常見來源: 指針沒有初始化 new了對象後沒有及時delete,導致內存泄漏。 野指針;使用delete後的對象,會導致系

原创 IO多路複用

I/O多路複用機制 IO多路複用機制 簡介 1流的概念 2 IO同步異步阻塞非阻塞 3 多路複用概念 4 IO複用的優勢 IO複用函數介紹 1 select函數 2 Poll函數 3epoll函數 4 epoll相比於selec

原创 Map集合

Map集合 Map集合 簡介 映射表的性能 1 散列碼 2 性能因子 Map集合的一些實現 1Map 2AbstractMap 3 HashMap 4 LinkedHashMap 5 TreeMap 6 SortedMap