快速活动切换崩溃应用
问题描述:
我遇到了一个与我的应用问题,当我在活动之间快速切换时,我可以使应用崩溃。我不确定导致事故的原因。以下是用于切换活动的代码。该代码被复制到每个活动(地图,列表和拉力赛)中。快速活动切换崩溃应用
@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按钮,应用程序分配的内存就会降低到正常数量。同样,分配的内存保持在正常水平,除非我快速在类之间切换。为什么会发生任何事情,我完全丧失了信心。到目前为止,我已经尝试过使用这些答案,它们似乎对这个问题没有影响。
答
,请在创建例如新意图时指定活动的目前情况下,如果你是目前MainActivity然后
Intent intentMap = new Intent(MainActivity.this, Map.class); startActivity(intentMap);
,你说这是在某种程度上造成我的问题?因为每个活动都包含此代码,所以'CurrentActivity.this'与'this'应该是相同的 – Riko
您也可以使用... Intent intentMap = new Intent(getApplicationContext(),Map.class); –
所有这些代码行都适用。他们没有改变我遇到的问题。 – Riko