原创 Android踩坑經驗-notifyDataSetChanged列表不刷新問題分析

本文主要闡述在使用RecyclerView中遇到notifyDataSetChanged列表不刷新問題,表現是:列表滑動時,notifyDataSetChanged可以正常刷新界面,但Fragment切換Tab後,再次滑動Recycl

原创 Android踩坑經驗-優化APK大小時不可輕易刪除/META-INF目錄

在優化APK大小時,往往會刪除無用資源,重複資源等,有些童鞋可能看到META-INF文件夾下都是聲明信息,簽名信息等,因此感覺除了簽名信息外,其他信息可隨意刪除,但其實不然。 META-INF文件夾主要存放的配置信息,簽名信息,ser

原创 Android踩坑經驗-View post方法不執行

View.post()方法在android7.0之前,在view沒有attachToWindow的時候調用該方法可能失效,尤其異步線程,如在onCreate,onBindViewHolder時調用view.post方法,可能會不生效,

原创 Android內存優化(三)Java Heap內存分析之MAT使用及其二次開發

本文主要從MAT使用及其MAT如何二次開發兩點來闡述 MAT如何分析內存問題 標題MAT作爲Android Java內存分析的利器,功能十分強大,通常可用此工具發現內存泄漏問題,內存異常問題,網上的帖子非常之多。分析過程大概如下: 1

原创 Android內存優化(四)系統級別的內存回收策略優化--process reclaim

曾經反編譯過某廠商的framework代碼,結合廠商機器的表現,發現了進程內存管理的部分邏輯,記錄如下: 之前一直懷疑某廠商的AMS.updateOomAdjLocked()方法中,添加了進程管理邏輯, 結果是進程管理的代碼還沒覈實,

原创 Android內存優化(二)系統進程之logd的native memory優化

最近的測試發現,C1 logd進程內存佔用比Mate9 logd進程內存佔用大很多,詳細數據如下: 內存最大值(KB) 內存最小值(KB) 內存平均值(KB) C1 3979

原创 Android內存優化(二)之如何分析native heap

如何獲取native heap請閱讀上篇文章,本篇文章將主要介紹如何分析一個native heap文件,以及我們的native memory leak問題如何發現並定位。 首先先來看一下實際中我們看到的native heap(我臨時dum

原创 Android內存優化(二)之獲取native heap文件過程

獲取某個進程native heap的方法大致分爲兩個步驟: 1:配置兩個屬性,上一篇博客中有介紹,具體操作如下: adb shell stop adb shell setprop libc.debug.malloc.

原创 GraphicsStatsService常見的幾個問題帶來的思考

最近有一部分工作涉及到GraphicsStatsService服務,有幾個問題: 1:爲什麼會有兩個相同的package 2:進程掛掉後再重啓,爲什麼Since不變 3:有沒有3個Package相同的情況 4:Since值

原创 JDK 1.7源碼閱讀筆記(七)集合類之HashMap

前言   HashMap一直是我的一個心病,因爲在面試的時候HashMap是個出現頻率高發點,不管是知識點,還是現場編程,而且自己當時答得不好,今天就回歸到源碼,真正探究下HashMap的底層實現,去獲知它的特性。 特性描述   (1)基

原创 Android內存優化(二)之Bitmap的內存申請與回收(Android N和O的對比)

在Android O上大面積的爆了大量native Bitmap相關的泄漏問題,最大能達到幾十MB,開始懷疑是出現了native內存泄漏問題,但經分析後發現是Android N和Android O在處理Bitmap的內存存儲不同導致的問題

原创 Android內存優化(一)之Android常見的Java層內存泄露場景及合理的修復方案

首先解釋下內存泄露: 內存泄漏(Memory Leak)是指程序中己動態分配的堆內存由於某種原因程序未釋放或無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重後果。 內存泄露分爲永久性泄露

原创 Android內存優化(一)之Java層內存泄露監測工具原理(Leakcanary)

近期時間相對寬裕一些,把相關的知識點整理下放到博客~ 封裝的Java層內存泄露監測工具主要基於開源的leakcanary project,下面對Leakcanary原理淺析 Leakcanary簡介 Leakcanary工具是用來檢測

原创 Android內存優化(二)之Native內存泄露檢測工具malloc debug基礎篇

google 有個debug工具malloc debug,可以用於檢測native內存泄露,我們都知道,分配內存的方式有許多,爲什麼要選malloc_debug?而不是calloc_debug等呢~ 原因 在native世界,我們經常用到

原创 dumpsys原理

dumpsys在分析問題時,是一個常用的工具,用來dump系統相關信息。 如: dumpsys activity 當前系統所有activity堆棧信息 dumpsys cpuinfo 當前系統CPU相關信息 dumosys在/sys