案例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中,我已经在其中设置了内容视图的对话框。只需点击按钮即可显示/解除。
所以我的问题是,第一个案例是否会释放一些记忆,或者它会产生相同的效果吗?
答案 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很好。