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