启动新活动android时释放内存

时间:2015-07-12 15:51:50

标签: android android-intent memory oncreate

我不太明白如何开始新活动以及如何在执行此操作时释放内存。

这就是我所拥有的:

    Button b1, b2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        setContentView(R.layout.activity_main);

        setReferences();
    }

    private void setReferences() {
        b1= (Button) findViewById(R.id.b1);
        b2= (Button) findViewById(R.id.b2);
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent newActivity;
        switch (v.getId()) {
            case R.id.b1:
                newActivity = new Intent("com.sblasblasbla.PLAYACTIVITY");
                startActivity(newActivity);
                break;
            case R.id.b2:
                newActivity = new Intent("com.sdasdsadsa.THIRDACTIVITY");
                startActivity(newActivity);
                break;
        }
    }
}

但是当我去另一个活动时我想要释放内存,如果我按下后退按钮(返回)来保存我的活动布局(带背景和按钮等)我的意思是不要删除它们

我怎样才能有效地做到这一点?我听过onStop和onDestroy的内容,但我不知道它们是如何工作的。此外,如果我销毁活动,它再次调用onCreate?

2 个答案:

答案 0 :(得分:0)

没有什么需要专门用来释放内存。 Android系统将自动垃圾收集对象,这些不再需要。

这取决于几个因素,例如,没有。当前运行的应用程序,可用的RAM数量等等。但仍然可以给这个post一个很好的阅读。

答案 1 :(得分:0)

除非您在静态变量,服务或应用程序中泄漏指向活动的指针,否则Android将在需要时自动释放内存。这可能只是在您离开活动时,或者可能是稍后(包括从不)。您可以查看this article以获取更多信息。

要保存和恢复您的活动状态(不是布局,不需要保存并使用setContentView进行恢复),您可以使用onSaveInstanceStateonRestoreInstanceState