有时当我按下按钮时,活动会比应该有的多吗?

时间:2016-10-25 13:54:57

标签: android android-fragments android-intent android-activity back-stack

我不知道如何说出这个问题。

我的应用程序有一个简单的ViewPager,您点击其中一个页面片段中的某些内容,它会将您带到另一个活动。按后退按钮,它会返回ViewPager。再次按下它会关闭应用程序。

然而,有时当我在ViewPager上按下后退键时,它会再次返回到另一个Activity,然后我按下它,它会将我带到ViewPager,依此类推,直到应用程序最终关闭。换句话说,它就像ViewPager或Backstack中的其他Activity一样有剩余的剩余实例(我认为它被称为),但我不知道这是怎样或为什么发生的。< / p>

我也不知道如何重现错误,这更令人沮丧。大多数情况下它按预期工作,但有时剩下的实例只是在我回压时突然出现。

我怎样才能更好地保证当我按下另一个Activity上的后退按钮时,它会回到ViewPager,当我按下ViewPager时,它会关闭应用程序?

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home: //called when I press back button on the phone or the back-arrow on the toolbar
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

//and then usually that's all I have, but in one particular Activity, I do override the function:

@Override
public void onBackPressed() {
    if (some conditions are met) {
        finish();
        super.onBackPressed();
    }
    else {
        //display some error message
    }
}

以下是我启动活动的方式:

public void launchSomeActivity() {
    Intent intent = new Intent(getActivity(), ActivityName.class);
    intent.putExtra( etc etc etc );
    startActivityForResult(intent, REQUEST_CODE);
}

1 个答案:

答案 0 :(得分:1)

很可能你会看到一个令人讨厌的长期Android漏洞。如果您是第一次从IDE或安装程序启动应用程序,当您将应用程序置于后台并从HOME屏幕再次启动时,Android会创建另一个根活动实例。这将完全展示您报告的行为。如果您是第一次通过在HOME屏幕(或可用应用程序列表)中按应用程序图标启动应用程序,则不会出现此问题。

请参阅Re-launch of Activity on Home button, but...only the first time