3

我有一个简单的 Hello World 应用程序

public class TestLeaksOnFinish extends Activity  
{
    static int ctr = 0;
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    TextView t = new TextView(this);
    t.setText("Hello World! "+ctr++);
    setContentView(t);          
    }   
}

当我多次运行这个时,每次按下BACK,我看到ctr每次都增加,表明Activity在BACK后没有完全杀死。

这也可以通过在按下 BACK 后在 DDMS 中转储 HPROF 文件来确认。
该文件仍然包含我的 TestLeaksOnFinish 活动类。

有人可以解释为什么按 BACK 后这个 Activity 仍然存在于堆转储中吗?

当我列出传入的引用时,我得到以下 来自 DDMS 的屏幕截图

4

1 回答 1

11

在 Android 活动中,它们不会被杀死,它们只会被移到后台。这就是 Android 的工作方式,你不能杀死应用程序,或者基本上没有退出,如你所知。它只会留在后台和内存中。

当内存不足时,系统会根据系统赋予每个应用程序本身的优先级来终止应用程序进程。

于 2011-11-16T09:05:21.443 回答