2015-07-12 34 views
2

我不太明白如何開始一個新的活動,以及如何釋放內存。當開始新的活動時釋放內存android

這是我有:

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?

回答

0

沒有什麼需要專門做釋放內存的。 Android系統將自動垃圾收集對象不再需要的

這取決於幾個因素,如沒有。當前正在運行的應用程序,可用內存量等。但仍然給這個post一個很好的閱讀。

+0

我也有一個背景圖片,它仍然在內存中。如何釋放,因爲我有12 MB的堆.. –

+0

你無法控制什麼應該在內存中,什麼不是。如果系統內存不足,它會自動清除對象。只要確保它們在其他地方被引用。 –

0

除非您泄漏指向靜態變量,服務或應用程序中的活動的指針,否則Android會在需要時自動釋放內存。這可能只是當你離開活動或稍後(包括從不)。您可以查詢this article瞭解更多信息。

要保存和恢復您的活動狀態(不是佈局,不需要保存並使用setContentView恢復),您可以使用onSaveInstanceStateonRestoreInstanceState