あんざいさん、笠井さん
でんです。
どうもありがとうございます!!
> >私の説明不足で申し訳ないのですが、アプリのファーストアクティビティの
> >LaunchModeはstandardになっています。
> >ですので、通常のHomeアプリから起動する際に、すでに起動済みのアプリが
> >存在していれば、それが前面に出てきてくれて、多重起動はしませんので問題なしです。
> android:launchMode="standard" はアクティビティの
> インスタンスを複数生成することができるモードです。
> なので、standard だから多重起動しないというのは間違いです。
これ、間違いですね。ご指摘ありがとうございます。
私の説明の質が悪すぎで御手数おかけしてます。色々ご説明する必要があったようです。
アプリケーション、タスク、アクティビティの意味は、一応理解しているつもりです。
もう一度ご説明させていただくと、
まず、アプリケーションの作りとして、以下のようになっています。
・画面数が多く、さらに画面遷移がとても複雑という理由から、画面遷移(startActivity)が終わったら、もとのActivityは
finishする作りにしています。(アプリ全体がそういう作り。常にタスク内は1アクティビティしか存在しない。)
・ルートアクティビティは、スプラッシュ画面です。起動準備が終わると、他のアクティビティが起動され、スプラッシュ画面のアクティビティは
finishします。
そのアプリの作りを前提として、以下の手順でタスクが複数起動してしまいます。
a. インストール後、Notificationに出ているインストール完了通知から、アプリを起動する。
起動したアクティビティは、起動処理終了後に他アクティビティを表示して、自分はfinishする。
(startActivityのIntentパラメータ:INFO/ActivityManager(1401): Starting
activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=ない
しょ })
b. 上記aのタスクが残っている限り、あとからHome アプリより起動したものが、全て別タスクとして起動されてしまう。きっとルートアクティビ
ティが無いことが原因なのでしょうね。
(startActivityのIntentパラメータ:INFO/ActivityManager(1401): Starting
activity: Intent { act=android.intent.action.MAIN
catandroid.intent.category.LAUNCHER] flg=0x10200000 cmp=ないしょ bnds81,74]
[219,232] })
お教えいただいたsingleTaskの設定も試しましたが、同様の現象が起こってしまいます。
(ルートアクティビティが無くなる作りであるためですよね。)
上記aのIntentのフラグにはFLAG_ACTIVITY_RESET_TASK_IF_NEEDEDが無いことと、
ルートアクティビティが無くなる作りであることが原因なのだと認識しています。
(標準のホームアプリから起動するぶんには、一切問題ないため)
今回の問題、Androidアプリとしてはイレギュラーな作りにしてしまったのが原因であろうことは、
いまさらですが理解しています。
画面数が多くて、画面遷移が複雑なアプリを作る上でのサンプルやガイドラインでもあれば嬉しいのですが、
今後自分たちで頑張って考えてみます。
貴重なお時間いただき、ありがとうございました!!
On 2月21日, 午後7:40, Yasuharu Kasai <
pantheon.mob...@gmail.com> wrote:
> あんざいさん、でんさん、
>
> またまた笠井です。
>
> Launcher Activity に android:launchMode="singleTask"を設定すると、
> 既に起動されているTaskが使用されますが、最後に表示していたActivity
> が表示される保障があるわけではなく、Launcher Activityが最前面になり
> ますよね?
>
> 私はそもそもそれが問題なんだと思い込んでいましたが、でんさんの最初
> の投稿を見ると本当にそうなのかわからなくなってしまいました...。
>
> ApplicationとTaskとActivityを明確に記述するのが一番良い方法だと思い
> ますが、でんさんのメールの中でTask=Activityと仮定すると、あんざいさん
> のおっしゃる通り、
> android:launchMode="singleTask"
> でいいのかも知れませんね。
>
> 笠井
>
> 2011年2月21日17:57 あんざいゆき <
anzai.y...@gmail.com>:
> >
http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java...
> > に少し書いてあります。
> > 最初に CATEGORY_INFO を見て、次に CATEGORY_LAUNCHER を見て、
> > 両方ない場合は null を返すようです。
>
> > 笠井さんが指摘しているように、ランチャーからの起動では、
> > Intent.FLAG_ACTIVITY_NEW_TASK
> > <
http://developer.android.com/reference/android/content/Intent.html#FL...>
> ...
>
> もっと読む ≫