🥶

android DeepLinkを踏んだ後にWebブラウザ遷移し、タスクからアプリに戻ると永遠とWebブラウザ遷移させられてしまう件

2022/03/15に公開

タイトルままなのですが、

DeepLinkを踏むと通常アプリ導線とは別に

DeepLinkをよしなに捌くようのActivityが立ち上がり、

そこからWebブラウザをStartActivityするみたいな

あんまりやらないであろう処理をやっていた所、

Webブラウザ遷移自体は問題なくできるのですが

その後タスクマネージャーからアプリに戻ると、

何故か再度何故かWebブラウザ遷移させられるという

謎のバグに遭遇しました;;;;;

現象

ほぼ上記ままで書くことは特にないのですが、

Webブラウザを端末の戻るボタンで戻ると問題なく戻れて

タスクマネージャーから戻った場合のみWebブラウザ遷移ループが起こる

というような感じでした。


DeepLink管理Activityのfinish()のタイミングが悪いのかと思い

各コールバックにログを仕込んで探ってみた所

どうやらタスクマネージャーから戻った場合

DeepLink管理Activityが再度onCreateから走って

DeepLinkを踏んだ時からの処理が再度走っているようでした

原因

はい。

原因ですがよくわかりません;;;;

強いていうならDeepLinkを乱用してどうにかするみたいなことは

やめたほうがいいと思います()

対処法

fun showWebApp() {
        finish()
        runBlocking {
            delay(500)
        }
	うんたらかんたらしてStartActivityする
    }

Webブラウザ遷移するイベント内で

まずfinish()を叩いた後にrunBlockingしてdelay(500)すると(500より小さいとだめ)

何故か上手くいきました;;;;;;;;

結論

そもそもDeepLinkの乱用はやめたほうがいいと思います。
(様々な理由で使わざる得ない場合があるとは思います)

どうして発生したのかも何で対処できたのかも

何もわからないのでわかる方はコメントなどで教えて頂けるとありがたいです。

参考記事

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ja#ondestroy

https://nagare-it.com/62/

https://woshidan.hatenablog.com/entry/2017/09/07/083000

https://mt312.com/3259#Activity

http://www.ytdk.jp/android/app/startactivity2/

https://yoo-s.com/topic/detail/346

https://zenn.dev/t2low/articles/ea610398e29154e1a887

https://developer.android.com/guide/components/intents-common?hl=ja#Browser

Discussion