android - 如何修复textview上的内存泄漏
问题描述
我是 dagger 和 mvp 模式的新手,我有内存泄漏。
我不确定内存泄漏的原因是什么。
我认为泄漏的原因是 txtCityName
但也许我的错误是在匕首或 mvp 中。
如果您需要更多详细信息来回答评论,请。
@OnClick(R.id.constraintLayoutCity)
void onCityClick() {
searchPresenter.getCity();
}
public void getCity() {
cities = new CharSequence[]{"manchester", "london", "madrid", "barcelona"};
adb.setSingleChoiceItems(cities, 0,(d, n) -> {
selectedCity = n;
view.setCity(cities[n].toString());
d.dismiss();
});
adb.setTitle("select a city");
adb.show();
}
public void setCity(String city) {
txtCityName.setText(city);
}
LeakingInstance(referenceKey=7b6a8af5-1103-44d0-91c4-5cb25597d2a2, referenceName=, instanceClassName=androidx.constraintlayout.widget.ConstraintLayout, watchDurationMillis=5151, excludedLeak=false, leakTrace=
┬
├─ ir.reservs.reservs.ui.main.search.SearchFragment
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ ↓ SearchFragment.txtCityName
│ ~~~~~~~~~~~
├─ androidx.appcompat.widget.AppCompatTextView
│ Leaking: YES (View#mAttachInfo is null)
│ View.mID=R.id.txtCityName (2131362166)
│ View.mWindowAttachCount=1
│ ↓ AppCompatTextView.mParent
├─ androidx.constraintlayout.widget.ConstraintLayout
│ Leaking: YES (View#mAttachInfo is null)
│ View.mID=R.id.constraintLayoutCity (2131361908)
│ View.mWindowAttachCount=1
│ ↓ ConstraintLayout.mParent
╰→ androidx.constraintlayout.widget.ConstraintLayout
Leaking: YES (RefWatcher was watching this)
, retainedHeapSize=null)```
我读到 textview 内存泄漏的原因是 textview 设置在屏幕外。但就我而言,我的文本视图在正确的位置。所以我不认为泄漏是为了那个。
在约束布局上设置点击监听器有问题?
解决方案
我怀疑您在演示者中引用了 txtCityName。通常,内存泄漏是由引用活动或片段的静态成员引起的,然后当该活动或片段被系统销毁时,垃圾收集器由于静态引用而无法清理它。您的演示者永远不应该对您的片段一无所知。txtCityName 是在演示者中引用还是在片段之外的项目中的任何地方引用?
推荐阅读
- javascript - 使用事件监听器更改按钮
- python - 检查 multiprocessing.managers.DictProxy' 大小的正确方法是什么?
- karate - 带有并行运行器的 ExecutionHook
- python - Psycopg2 安装问题 (Mac)
- php - PHP foreach 循环不会遍历对象,并且不会启动
- google-sheets - 在 Google 表格中使用数组公式从不同的行和列中提取值
- python - Kivy - ImportError: dlopen failed: "../sklearn/.../__check_build.so is" 是 64 位而不是 32 位
- python - 如果列包含列表中的任何关键字,则 Pandas。那么如何检查找到了哪些关键字?
- javascript - [已解决]Javascript/Jquery & PHP:获取循环中的 div ID
- reactjs - 在 getServerSideProps 中未检测到 NextJS cookie 令牌