我有一个简单的 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>
主要是Native内存增长了~3.6MB,无法进行GC...这是为什么?
最佳答案
没有内存泄漏!
是的,当您显示对话框时,内存使用量会增加,因为它需要内存来创建实例并将实例呈现给用户。
当 Android 显示对话框时,会调用一些 native 函数来将对话框绘制到屏幕上。
但是当您关闭对话框时,Android 也会清除所有 native 缓存。
系统假设当您显示一个对话框后,您可能想在之后显示另一个对话框。它将为此缓存一些 native 实例。这样系统下次就能更快地显示对话框。
当需要内存时,Android 会清除此缓存,但系统应该在有足够内存时执行此操作。
关于Android AlertDialog 多次显示和关闭时会泄漏内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63635480/