InputMethodManager引起的内存泄漏解决方案,亲测有效

通过leakcanary检测内存泄漏,老是出现InputMethodManager引起的内存泄漏,查看过很多资料,应该是android源码的bug。leakcanary官方提供的解决这个问题的方法,测试发现没有用。通过反复查阅测试发现下面的方法可以解决这个问题,所以记录下来

先写一个透明的过渡Activity

/**
* 解决InputMethodManager引起的内存泄漏
* Created by liuxin on 2018/4/8.
*/

public class DumpActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            finish();

        }
    }, 500);
}

}
为这个Activity应用透明主题
配置清单文件

 <activity
            android:name=".ui.DumpActivity"
            android:theme="@style/AppTheme.Transparent"
             />

style.xml

 <!-- Customize theme for floating. -->
        <style name="AppTheme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="windowNoTitle">true</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:backgroundDimEnabled">false</item>
        </style>

在会发生内存泄漏的Activity调用

 @Override
    public void onBackPressed() {
        super.onBackPressed();
        startActivity(new Intent(this, DumpActivity.class));
        finish();
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值