确定活动是否由于后退导航而出现在前面

Jak*_*kob 14 android back onresume android-activity

我想知道我的Activity是否显示是因为用户按下了其他一些Activity.在生命周期中,我无法识别任何强力向我提供该信息的回调.

onRestart()不管用.如果应用程序任务被带到前面,它也会触发. onResume()由于同样的原因不会起作用.

我想有一个简单的解决方案,但在Android中,据说简单的东西可能非常讨厌.

Mxy*_*xyk 18

打电话给你带第2活动startActivityForResult(Intent, int),然后覆盖onBackPressed()在第二活动,有它setResult()RESULT_CANCELED.最后,让第一个活动抓住它onActivityResult().

代码示例:

活动1:

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 0);
Run Code Online (Sandbox Code Playgroud)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        if (resultCode == RESULT_CANCELED) {
                // user pressed back from 2nd activity to go to 1st activity. code here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

活动2:

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    finish();
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,尽管我有大约 15 个活动,并且我使用的 AndoridAnnotations 没有调用 startActivityForResult 的选项(但是,虽然在即将发布的版本中)......所以我仍然希望有其他想法...... (2认同)