原创 BroadcastReceiver詳細分析之主要流程

本篇代碼基於原生Android Q 一.廣播的基本使用 BroadcastReceiver是Android的四大組件之一,其重要性不言而喻。廣播可以用來進程內主線程和子線程進行通信,也可以用於進程間通信。下面是廣播的基本使用方法: //

原创 Android窗口顯示流程淺析(三)

上回說到,ViewRootImpl.setView與WMS和SurfaceFlinger建立完鏈接後,接着會執行SurfaceControl和Surface的申請,因爲沒有Surface,APP端就無法進行view的繪製。好的,我們看下r

原创 Android窗口顯示流程淺析(二)

上一篇我們看到了ViewRootImpl的setView函數,ViewRootImpl的setView函數,主要流程分爲兩步: 1.向WMS請求添加窗口並建立SurfaceFlinger鏈接 2.APP端請求獲取Surface,WMS建立

原创 Android窗口顯示流程淺析(一)

本篇開始,我們來談一談Android窗口的顯示過程,注意,我們不包含Activity的冷啓動過程,側重於Activity,Window關係的建立。 窗口的顯示包含了Activity,view,Window,WindowManager,WM

原创 BroadcastReceiver詳細分析之串行廣播的調度和超時機制

上一篇文章我們主要梳理了廣播的動態註冊,發送,接收,主要的數據結構以及需要大家嚴重注意的幾點內容,相信大家已經熟悉了。沒看過的朋友傳送門:BroadcastReceiver詳細分析之主要流程 相信聰明的朋友已經發現,上篇基本沒怎麼介紹串行

原创 Notification和NotificationManagerService原理解析

本篇代碼基於原生Android P 一.通知的基本使用 通知欄消息是應用開發中十分常見和重要的一項功能。在Android O之後,增加了NotificationChannel的新特性,相同channel的通知擁有同樣的特性,例如優先級,聲

原创 Google cameraview開源框架的bug分析

一.問題背景 前段時間排查某個APP無法拍照問題的時候,發現了APP的log中有如下的異常堆棧: 12-25 11:40:41.562 10170 27566 27566 W System.err: java.lang.NullPoin

原创 從A*算法看AI尋路問題

一.尋路問題 尋路問題一直以來都是十分經典和有趣的問題,在我們生活中以及人工智能方面有着及其重要的研究價值。簡而言之,尋路問題就是在給定起點和終點的情況下,找出一條可到達的最短路徑,一路上可能有牆,坑,湖等不可經過的地段。 表現在數據結構

原创 Android高亮引導頁的簡單實現

       前段時間公司APP有需求做一個內部的高亮引導頁,我之所以說內部,因爲外部也有引導頁(這不是廢話嘛,-_-||)。具體的樣式想必大家都很清楚,就是那種在某個頁面上進行操作指引的那種效果。本文着重說了內部引導頁,是爲了區別於外部

原创 Jmeter壓力測試簡單教程(包括服務器狀態監控)

    前段時間公司需要對服務器進行壓力測試,包括登錄前的頁面和登錄後的頁面,主要目的是測試負載均衡的實現效果。不知道是不是因爲Jmeter不如loadRunner火爆還是什麼,網上關於Jmeter的資料有很多但是大多千篇一律,要麼簡單弄

原创 Android仿朋友圈照片定點放大和滑動查看(未完待續)

    最近公司的項目中有一個圖片加載和查看功能實現,具體是說通過列表項加載小圖片,點擊放大圖片並且可以左右翻頁,放縮等等,類似於微信朋友圈的照片牆功能。拿到這個需求後我想了想,圖片列表首選當然是RecyclerView啦,線性佈局,網格

原创 linux服務器狀態監控軟件-psdash安裝教程

     關於Linux平臺下的服務器監控軟件有很多,這裏要說的不是在Linux系統下的終端服務狀態顯示(控制檯),而是可以通過web頁面查看到的服務器狀態。本人先後安裝了nagios,linux-dash,psdash等等,綜合比較而言

原创 Activity的生命週期函數、onActivityResult、intent和啓動模式的調用關係

前段時間被activity的啓動模式和intent傳值問題糾結了不少時間,有必要進行一下總結和學習,日後也好回來複習,下圖中MainActivity簡稱A,TwoActivity簡稱B。 一.activity A和B啓動模式都是默認(即沒