gpt4 book ai didi

android - 您如何区分 onPause() 由于 onNewIntent 与 android 中的用户操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:54 25 4
gpt4 key购买 nike

如果您在 android 中设置了一个 Activity ,当它在停止或暂停状态下接收到 Intent 时触发 onNewIntent()。如果它在运行时收到一个 Intent ,它会经历以下序列:

onPause() -> onNewIntent() -> onResume()

但是,如果您因用户操作而暂停,您只会得到 onPause()。

现在,如果您想在用户隐藏您的应用程序的情况下做某事,但在您获得新的背景 Intent 的情况下则不需要。例如,仅当您的应用被隐藏时才取消录制之类的操作,看来您被搞砸了。

直到将来的某个时候,您才会知道您收到 onPause 是因为用户隐藏了您的应用程序还是因为传入的后台 intent。

我是不是遗漏了什么或者这完全坏了?

如果您在运行时获得 Intent ,他们为什么不直接发送 onNewIntent 回调。而不是暂停,onNewIntent,恢复序列?

最佳答案

如果有人再次偶然发现此问题 - 将无法检测到是否由于新 Intent 调用了 onPause(),但可以检测到 onResume()。只需在调用 onNewIntent() 时添加 BUNDLE_KEY_NEW_INTENT_CALLED,然后检查 onResume() 中的标志并采取所需的操作。

  @Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
intent.putExtra(BUNDLE_KEY_NEW_INTENT_CALLED, true);
setIntent(intent);
}

@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
boolean isResumedDueToNewIntent = (intent != null && intent.getBooleanExtra(BUNDLE_KEY_NEW_INTENT_CALLED, false));
if (isResumedDueToNewIntent) {
actOnNewIntent();
}
}

关于android - 您如何区分 onPause() 由于 onNewIntent 与 android 中的用户操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com