2

情况1:

public class NewEntryActivity 
{

  public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.xxxx);


    //my_button_1 
        my_button_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final Dialog dialog = new Dialog(NewEntryActivity.this);

              dialog.setContentView(R.layout.abcabc);

              dialog.show(); 

              // On click of OK button in this dialog it will DISMISS the dialog. ( NOT remove )

            }
            }

    //my_button_2
        my_button_2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            final Dialog dialog = new Dialog(NewEntryActivity.this);

              dialog.setContentView(R.layout.xyzxyz);

              dialog.show(); 

              // On click of OK button in this dialog it will DISMISS the dialog. ( NOT remove )

            }


            }

    }
}

案例二:

public class NewEntryActivity 
{

  public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.xxxx);


        final Dialog dialog1 = new Dialog(NewEntryActivity.this);
        final Dialog dialog2 = new Dialog(NewEntryActivity.this);

        dialog1.setContentView(R.layout.abcabc);
        dialog2.setContentView(R.layout.xyzxyz);

        //my_button_1 
        my_button_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

              dialog1.show(); 

            }
            }

    }


}

在 CASE 2 中,我已经在其中设置了内容视图的对话框。只需单击按钮即可显示/关闭。

所以我的问题是,第一种情况会释放一些内存,还是会产生相同的效果?

4

3 回答 3

1

它仅取决于您的应用程序消耗了多少内存,特别是在此活动中,但案例 1 似乎不错。

于 2012-10-25T10:37:44.247 回答
1

Android 的进程和内存管理有点不寻常。与 Java 和 .NET 一样,Android 使用自己的运行时和虚拟机来管理应用程序内存。与这些框架中的任何一个不同,Android 运行时还管理进程生命周期。Android 通过在必要时停止和终止进程来为更高优先级的应用程序释放资源来确保应用程序的响应能力。

每个 Android 应用程序都在其自己的 Dalvik 实例内的单独进程中运行,将所有内存和进程管理责任交给 Android 运行时,它会根据需要停止和终止进程以管理资源。

Dalvik 和 Android 运行时位于 Linux 内核之上,该内核处理低级硬件交互,包括驱动程序和内存管理,而一组 API 提供对所有底层服务、特性和硬件的访问。

Dalvik 虚拟机 Dalvik 是一个基于寄存器的虚拟机,经过优化以确保设备可以高效地运行多个实例。它依赖于 Linux 内核进行线程和低级内存管理。


这个线程肯定会帮助您清除有关 android 内存管理的概念。
是另一个链接,可以了解更多关于 android 内存分配的信息。
祝你好运!

于 2012-10-25T12:40:08.927 回答
0

每当您在该内存占用创建对象时。案例1好

对象的数量会随着它们的创建而增加,然后随着垃圾收集器的运行而减少。

如果即使使用垃圾回收,对象的数量也继续增加,那么您可能存在内存泄漏。“hprof”堆转储(何时可以通过单击 DDMS 中的按钮触发)可以帮助确定原因。

在这里,您的问题本身就是答案,在 case2 中,对话框中已经设置了内容视图。只需单击按钮即可显示/关闭。这意味着内存已经被占用。

案例1很好。

于 2012-11-05T04:40:34.830 回答