gpt4 book ai didi

Android AlertDialog 在多次显示和关闭时泄漏内存?

转载 作者:行者123 更新时间:2023-12-05 00:19:12 27 4
gpt4 key购买 nike

我有一个简单的 Activity ,只有一个按钮来弹出一个简单的对话框。代码是:
1. MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void showDialogBlank(View dumbView) {
AlertDialog.Builder dlgBuilder = new AlertDialog.Builder(this);
dlgBuilder.setTitle("TEST-TITLE")
.create()
.show();
}
}
2.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/btnShowDialogBlank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="showDialogBlank"
android:text="btn-blank" />

</LinearLayout>
多次单击按钮和空白区域后,内存是这样的:
enter image description here
主要是 native 内存 增长 ~3.6MB , 不能是 GC ......这是为什么呢?

最佳答案

没有内存泄漏!
是的,当您显示对话框时,内存使用量增加了,因为它需要内存来创建实例并将实例呈现给用户。
当 Android 显示 Dialog 时,会调用一些 native 函数来将 Dialog 绘制到屏幕上。
但是当你关闭一个对话框时,Android 也会清除他所有的本地缓存。
系统假设当您显示过一次对话框时,您可能希望在此之后显示另一个对话框。它将为此缓存一些 native 实例。这样系统下次可以更快地显示对话框。
当需要内存时,Android 将清除此缓存,但系统应在内存足够时执行此操作。

关于Android AlertDialog 在多次显示和关闭时泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63635480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com