原创 淺談Android上的MVP架構

一、前言 在日常的Android開發中,如果不有意地進行架構設計,往往代碼都會比較凌亂,其中最常見的一個問題就是Activity的代碼太過冗雜,一些複雜的類可能會到達幾千行代碼。要解決這個問題,可以藉助MVP思想對代碼進行簡單的分

原创 深入瞭解Android Jetpack架構組件 - Lifecycle

一、前言 隨着Android開發模式的成熟,組件化已經成爲解耦複雜Activity的一個簡單實用的方式,因爲通過組件化可以大大降低一個Activity的代碼複雜度,並且抽離成獨立組件,實現代碼分離,避免造成內存泄漏和應用崩潰。 那

原创 Android編譯變體配置簡介-構建不同版本類型(buildTypes)和多渠道打包(productFlavors)

一、概述 在Android開發中,我們需要構建不同的版本類型(Relase、Debug、Alpha),或者是不同渠道(豌豆莢、小米、三星等),這些都可以配置編譯變體來實現,本文就是希望通過簡短且概括性的文字來進行解釋。 以下內容均

原创 關於Android中的內存泄漏問題,你需要了解這些

一、Android中內存泄露的經典場景 1. Activity中的Handler長期持有activity引用導致activity泄漏。 原因: (1). 在Activity內new一個Handler時,該handler實例會對

原创 手把手教你實現LRU算法(Java版)

一、前言 LRU,全稱Least Recently Used,即最近最少使用算法,怎麼理解?就是使用一個有序固定容量大小的隊列維持一堆數據,當往隊列插入一個不存在的數據時,就會淘汰掉最長時間沒有使用的數據,我們把這個算法成爲LRU

原创 字典序的第K小數字

題目 給定整數 n 和 k,找到 1 到 n 中字典序第 k 小的數字。 注意:1 ≤ k ≤ n ≤ 109。 示例輸入: n: 13 k: 2 輸出: 10 解釋: 字典序的排列是 [1, 10, 11, 12, 13,

原创 設計模式拙見--單例模式

一、前言 單例模式已經是一個非常常見的設計模式,在我們日常開發中也是非常容易遇到,但是你是不是真的掌握了呢?我們一起來探討一下。 二、單例模式實現方式 作爲一名程序員,我們經常在面試的時候被面試官問到,你會寫幾種單例模式?請你講下

原创 Kotlin常見知識點和踩坑指南

1.Kotlin支持View binding 當我們需要使用Kotlin的View binding特性時,需要進行如下操作: 在app目錄下的build.gradle裏面添加: apply plugin: 'kotlin-andr

原创 深入源碼學習IntentService

1.IntentService是什麼 IntentService是Service的一個派生類,顧名思義是一個Service。我們都知道,對於一些不需要跟隨Activity生命週期的操作,例如上傳、下載等我們在Service裏面進行

原创 開發必備-Git常用命令(持續更新中...)

一、創建倉庫 git init:初始化倉庫 git add:添加文件到暫存區 git commit:把暫存區的內容提交到當前分支 二、修改文件 git status:當前倉庫狀態 git diff:查看修改前後的差異$ gi

原创 BUG FIX有感-深入瞭解TextView的行間距計算邏輯

測試A:你這個橫幅有問題啊!正常不是這樣顯示的...   我:這個不好改啊,之前就發現了,這是偶現的問題,暫時先不改了!! 兩天之後...   測試B:我在測另一個需求時發現了這個問題,是不是bug? 我:emmm...應該是有問題的

原创 基於Android10.0源碼深入瞭解終將老去的AsyncTask

一、前言 相信AsyncTask對每一個開發者來說都非常熟悉,它是一個輕量級的異步任務類。同時,它也經歷了很多個版本的調整,如實現上從開始串行執行,再到並行執行,再後來又改回串行執行。AsyncTask從Android API3已

原创 Android獲取屏幕寬、高、狀態欄高度、導航欄高度、是否是全面屏

獲取屏幕的可使用高度 最近在做屏幕高度適配的時候,發現了一些問題,即我需要獲得下圖區域的高度的像素大小,如圖分析就是獲取屏幕的可使用高度,但是在兼容全面屏和非全面屏的時候,發現兩種機型的計算方式是有區別的。 爲了解決這個問題,我

原创 Android性能優化雜談-如何監控和解決ANR問題?

一、ANR的定義 Android全稱是Application Not Response,即程序無響應。ANR的直觀體驗是用戶在操作APP的過程中,感覺界面卡頓,如果 Android應用的界面線程處於阻塞狀態的時間過長,會觸發“應用

原创 Android日常開發踩坑篇

AppCompat 1、把androidx.appcompat升級到1.1.0以後,出現端內語言切換在Android 5~7 失效的問題。 Kotlin解決方案: override fun applyOverrideConfigu