我的应用程序存在问题,当我在各个活动之间快速切换时,我可以使应用程序崩溃。我不确定是什么导致了崩溃。这是用于切换活动的代码。此代码将复制到每个活动(地图,列表和集会)中。
@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按钮时,分配的内存应用程序将降至正常数量。同样,分配的内存保持在正常水平,除非我快速切换类。我完全不知道为什么会发生任何事情。到目前为止,我已经尝试过使用这些答案,但它们似乎对问题没有任何影响。
答案 0 :(得分:1)
请在创建新意图时指定活动的当前上下文,例如,如果您当前在MainActivity上,那么
Intent intentMap = new Intent(MainActivity.this, Map.class); startActivity(intentMap);