2014-04-10 76 views
0

我有幾個具體問題。壓縮後堆棧上的活動,內存使用情況

我正在開發一個旅遊應用程序。它工作的很好,但經過很長一段時間推出新的活動,它崩潰。我使用了調試,並且我意識到它使用了大量的內存,就像我打電話時不關閉的活動一樣。

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    this.finish(); 
} 

消除一些靜態變量和使用每一個新的活動這個標誌

Intent.FLAG_ACTIVITY_CLEAR_TOP 

內存空間後緩解。應用程序性能看起來不錯,但它使用了很多圖像和列表視圖,因爲我使用Holders

但是,在主要活動中,我放置了相同的onBackPressed代碼,但按下它後應用程序未關閉,內存使用量減少但我有我的懷疑

這裏是我的問題

  1. 是應用程序真正關閉?

  2. 它仍然存在,因爲是最近的應用程序?

  3. 內存使用量減少意味着活動FLAG_ACTIVITY_CLEAR_TOP和onBackPressed()正在工作嗎?

  4. 這是 正確的方式來管理活動完成()?

+0

看到這個,如果它可以幫助你http://stackoverflow.com/questions/20469023/android-outofmemory-error-and-the-backstack/20680484#20680484 –

回答

0
  • http://developer.android.com/training/articles/memory.html檢查了這一點,它可以幫助您與內存問題。其次,如果您的應用程序使用互聯網連接,請檢查您的代碼以檢查互聯網連接是否存在。
  • 第三,看起來你已經在onCreate()方法中編寫了所有代碼,因此該應用需要很長時間。使用AsyncTask。第四,每當你調用finish()方法,應用程序關閉。所以這是正確的方法。
+0

我用的AsyncTask,但我把它從的onCreate( ),最好是在onStart()中調用它?或onResume()? 謝謝。 – UrielUVD

+0

在onBackPress第一次活動後,監視器仍然顯示使用內存的應用程序,看起來應用程序沒有完成 – UrielUVD

+0

不,你應該從onCreate()本身而不是onStart()或onResume()調用它。 onCreate()是所有活動運行的主線程。 –