1
未執行任何與SPen相關的SDK庫,內存泄漏發生在AppCompatActivity
擴展類上。 以下事件序列通常會觸發內存泄漏:Samsung Note 3:按下SPen側按鈕後活動內存泄漏
- 用戶按側按鈕,激活Air Command工具。
- 沒有點擊任何Air Command工具的圖標,側面按鈕再次被點擊。
- 屏幕旋轉,在這種情況下會導致活動被銷燬並重新啓動。
- 通過Android Studio執行Java堆轉儲會顯示被銷燬的活動導致的內存泄漏。
- 分析器指示活動mContext變量被包類引用:com.samsung.android.smartclip.SpenGestureManager。這很可能導致活動內存泄漏。
會不會有什麼辦法可以清除參考由SpenGestureManager類舉行的mContext變量的存在?這應該有望讓垃圾收集器清除已銷燬的活動。
以下設備/ Android版本中檢測到這個問題(三星Galaxy Note 3個二重奏):
- 型號:SM-N9002
- 的Android版本:4.4.2(奇巧)
- 基帶版本:N9002ZNUFNK1
- ROM版本:SVA ROM SM-N9002 9.0
同樣的申請於三星Galax的測試y注意10.1設備,它似乎沒有此內存泄漏問題。
雖然:'getDeclaredField(「modifiers」)'似乎會拋出'NoSuchFieldException',你的方法似乎工作得很好。不過,我從手機的framework2.jar包中反編譯了SpenGestureManager.java,並且mContext出現,好像它沒有被聲明爲final。所以我用'mContext.setAccessible(true)'將setFinalStatic()調用替換爲直接調用'mContext.set(null,null)'。內存泄漏現在似乎已經消失。 – Tjaart
@Tjaart,很好,更新了答案。 – azizbekian