【问题标题】:Rapid activity switching crashes app快速活动切换使应用程序崩溃
【发布时间】:2017-11-04 02:56:00
【问题描述】:

我的应用程序出现问题,当我在活动之间快速切换时,我可能会导致应用程序崩溃。我不确定是什么导致了崩溃。这是用于切换活动的代码。此代码被复制到每个活动(地图、列表和拉力赛)中。

@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,并且正在运行在牛轧糖中的 S6 Edge 上进行测试。

我怎样才能找到这些崩溃的原因?

编辑:

所以我终于得到了一个例外来打破。事实证明我遇到了 OutOfMemoryError。我一直在玩 Android Monitor。显然,我假设我可能有内存泄漏,但是当我转储 Java 堆并使用分析器任务窗口时,它显示我没有泄漏。每当我双击 Initiate GC 按钮时,应用程序分配的内存就会下降到正常数量。同样,分配的内存保持在正常水平,除非我在类之间快速切换。我完全不知道为什么会发生任何事情。到目前为止,我已经尝试过使用答案,它们似乎对问题没有影响。

【问题讨论】:

    标签: java android exception android-activity


    【解决方案1】:

    请在创建新意图时指定活动的当前上下文,例如,如果您当前在 MainActivity 上,那么

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

    【讨论】:

    • 你是说这会导致我的问题吗?因为每个activity都包含这个代码,所以CurrentActivity.thisthis应该是一样的
    • 也可以使用... Intent intentMap = new Intent(getApplicationContext(), Map.class);
    • 所有这些代码行都有效。他们并没有改变我遇到的崩溃问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多