🥶
android DeepLinkを踏んだ後にWebブラウザ遷移し、タスクからアプリに戻ると永遠とWebブラウザ遷移させられてしまう件
タイトルままなのですが、
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の乱用はやめたほうがいいと思います。
(様々な理由で使わざる得ない場合があるとは思います)
どうして発生したのかも何で対処できたのかも
何もわからないのでわかる方はコメントなどで教えて頂けるとありがたいです。
参考記事
Discussion