我在使用华为手机Nova 2s开发应用时,通过LeakCanary发现有一部分内存泄露是华为定制的Android操作系统产生的,这个问题Github上有一部分用户已经提到过,我想不只是我这个型号的手机有,其它型号的华为手机也有,主要异常是“* GC ROOT static android.view.HwNsdImpl.sInstance”,异常的具体描述是:
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: In com.curry.stephen.graindryer.universal:1.0:1.
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * com.curry.stephen.graindryer.activity.crm.DryerCRMWorkerMainActivity has leaked:
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * GC ROOT static android.view.HwNsdImpl.sInstance
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * references android.view.HwNsdImpl.mEventAnalyzed
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * references com.huawei.android.hwaps.EventAnalyzed.mContext
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * references com.android.internal.policy.DecorContext.mPhoneWindow
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * references com.android.internal.policy.HwPhoneWindow.mContext
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * leaks com.curry.stephen.graindryer.activity.crm.DryerCRMWorkerMainActivity instance
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * Retaining: 67 kB.
2018-12-03 23:59:40.281 10763-10840/com.curry.stephen.graindryer.universal:leakcanary D/LeakCanary: * Reference Key: eca691ae-66e0-4df2-8e3f-859fa12ccd69
... ...

解决方案 »

  1.   

    android {
        compileSdkVersion 27
        defaultConfig {
            applicationId "com.yinglian.gsy"
            minSdkVersion 19
            targetSdkVersion 27
            versionCode 2
            versionName "1.0.2"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"   //加入这句话
            manifestPlaceholders = [qqappid: "1106673881"]
            multiDexEnabled true// 设置MultiDex可用
        }