2017-11-04 248 views
0

我遇到了一個與我的應用問題,當我在活動之間快速切換時,我可以使應用崩潰。我不確定導致事故的原因。以下是用於切換活動的代碼。該代碼被複制到每個活動(地圖,列表和拉力賽)中。快速活動切換崩潰應用

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.map: 
      Intent intentMap = new Intent(this, Map.class); 
      startActivity(intentMap); 
      finish(); 
      return (true); 
     case R.id.list: 
      Intent intentList = new Intent(this, List.class); 
      startActivity(intentList); 
      finish(); 
      return (true); 
     case R.id.rally: 
      Intent intentRally = new Intent(this, Rally.class); 
      startActivity(intentRally); 
      finish(); 
      return (true); 
    } 
    return (super.onOptionsItemSelected(item)); 
} 

當發生崩潰時,我嘗試使用調試器打破所有異常,但它不會拋出任何異常。我正在使用android studio,並且正在用nougat運行的S6 Edge上進行測試。

我該如何去尋找這些崩潰的原因?

編輯:

所以,我終於得到了一個異常打破。原來我有一個OutOfMemoryError。我一直在玩Android Monitor。顯然,我認爲我可能有內存泄漏,但是當我轉儲java堆並使用分析器任務窗口時,它顯示我沒有泄漏。每當我雙擊Initiate GC按鈕,應用程序分配的內存就會降低到正常數量。同樣,分配的內存保持在正常水平,除非我快速在類之間切換。爲什麼會發生任何事情,我完全喪失了信心。到目前爲止,我已經嘗試過使用這些答案,它們似乎對這個問題沒有影響。

回答

1

,請在創建例如新意圖時指定活動的目前情況下,如果你是目前MainActivity然後

Intent intentMap = new Intent(MainActivity.this, Map.class); startActivity(intentMap); 
+0

,你說這是在某種程度上造成我的問題?因爲每個活動都包含此代碼,所以'CurrentActivity.this'與'this'應該是相同的 – Riko

+0

您也可以使用... Intent intentMap = new Intent(getApplicationContext(),Map.class); –

+0

所有這些代碼行都適用。他們沒有改變我遇到的問題。 – Riko