gpt4 book ai didi

android - 如何避免在 Android 上处理两次深层链接?

转载 作者:行者123 更新时间:2023-11-29 20:40:53 24 4
gpt4 key购买 nike

我有一个 android 测试应用程序,它在 onResume 中处理自定义 URL 深层链接(例如 myapp://xxx/yyy),如下所示:

if (intent.getAction() != Intent.ACTION_VIEW) return;
String data = intent.getDataString();
if (data == null) return;
// do stuff with 'data' which is the custom URL

问题是每次应用程序恢复时,此代码都会一次又一次地处理 URL,即使它没有使用深层链接重新打开也是如此!假设我:

  1. 使用自定义 url 运行应用一次
  2. URL 得到正确处理
  3. 我再次将应用移至后台
  4. 我像往常一样重新打开应用程序(不是通过深层链接,只是按它的图标)
  5. URL 被再次处理,因为 getDataString() 不断返回最后一个 URL
  6. 如果我终止应用程序进程并定期启动它(不是通过链接)- 只有这样 getDataString() 返回 null 并且 URL 处理停止。

根据一些建议,我将代码移至 onCreate()。这仍然会一遍又一遍地运行,例如,当设备旋转时,即使应用程序仍在前台。所以 onCreate 也不是一个好的选择。

如何避免在应用恢复时反复获取相同的 URL?

最佳答案

根据以上评论,最有效的解决方案似乎是:

  1. 将 URL 处理代码放在 onCreate(state) 中
  2. 仅在 state == null 时处理 URL

代码示例:

void onCreate(Bundle savedInstanceState) {
if (savedInstanceState == null) {
if (intent.getAction() == Intent.ACTION_VIEW) {
String data = intent.getDataString();
if (data != null) {
// ... process URL in 'data'
}
}
}
}

关于android - 如何避免在 Android 上处理两次深层链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30997662/

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