欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 13:02:38
...

通过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();
    }
相关标签: 内存泄漏