2017-11-04 208 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