Android对话框&记忆

时间:2012-10-25 10:31:03

标签: java android android-dialog android-memory

案例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 )

            }


            }

    }
}

案例2:

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(); 

            }
            }

    }


}

在案例2中,我已经在其中设置了内容视图的对话框。只需点击按钮即可显示/解除。

所以我的问题是,第一个案例是否会释放一些记忆,或者它会产生相同的效果吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

每个Android应用程序都在其自己的Dalvik实例中的单独进程中运行,将内存和进程管理的所有责任放弃到Android运行时,这会在必要时停止并终止进程以管理资源。

Dalvik和Android运行时间位于处理低级硬件交互(包括驱动程序和内存管理)的Linux内核之上,而一组API提供对所有基础服务,功能和硬件的访问。

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


thread肯定会帮助您清除有关Android内存管理的概念。
Here  是了解更多关于android内存分配的另一个链接。 祝你好运!

答案 2 :(得分:0)

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

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

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

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

案例1很好。