2013年4月26日金曜日

launchModeとonNewIntentメソッド

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 件のコメント:

コメントを投稿