android:launchModeとonNewIntentメソッドについてメモ。
android:launchMode
http://bit.ly/cuooyE
onNewIntent
http://bit.ly/g8n7QT
以下、やりたかったこと。
(1)自分のアプリのメインActivity(入力欄を持っている)からブラウザを起動。
(2)ブラウザのURL共有機能で上記のActivityを呼ぶ。
(3)この時、ブラウザ起動前に入力された内容が消滅しないこと。
(4)入力欄に共有URLをappendする。
android:launchModeにsingleTaskを指定すると(3)は実現できました。
デフォルトのstandardだとダメだったということです。
でも、それだけだと共有URL情報を持ったIntentを受け取れませんでした。
つまり、(4)が実現できませんでした。
なので、onNewIntentメソッドをOverrideしつつ書きました。
これで(4)も実現できました。
@Override
protected void onNewIntent(Intent intent) {
// TODO
}
伴い、以下の問題が発生しました。
(1)自分のアプリのメインActivity以外のActivityを表示する。
(2)homeボタン長押しで他のアプリを起動する。
(3)homeボタン長押しで自分のアプリを起動する。
(4)自分のアプリはメインActivityが表示される。
android:launchModeを書いていなかった時(すなわちデフォルトのstandardだっだ場合)は
(4)のタイミングで(1)のActivityが表示されていました。
ちなみにandroid:launchModeをsingleInstanceにしてみたところ、
やりたかったことも上記の問題も発生はしませんでした。
ただ、WebViewが正しく表示されなくなってしまいました。
コレはさすがに致命的だったので、とりあえずsingleTaskにしています。
0 件のコメント:
コメントを投稿