URLスキームからの起動とandroid:launchMode="singleTask"

2,296 views
Skip to first unread message

DiceK

unread,
Sep 9, 2014, 11:08:28 PM9/9/14
to android-g...@googlegroups.com
はじめまして。
Androidアプリの開発を始めて、まだ1年にも満たない初心者です。

現在、URLスキームを利用してトップ画面が起動する形のアプリを作成しています。

Manifestの記述は以下の通りです。

<?xml version="1.0" encoding="utf-8"?>
    package="jp.hoge.launchmodetest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="jp.hoge.launchmodetest.TopActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:host="test" android:scheme="launchmode" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SubActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
    </application>
</manifest>

画面遷移としては、TopActivity -> SubActivity のみのシンプルなものです。

TopActivityがURLスキームから起動される際、ブラウザと同じタスクではなく別タスクとして起動して欲しいため、
Manifestの設定の中に android:launchMode="singleTask" を入れる事で、目的の動作は出来ました。

しかし、アプリ内でSubActivityに遷移した後、ホームボタンを押してバックグラウンドにいる状態で、
ランチャー内のアイコンをタップすると、必ずTopActivityが起動されてしまいます。

それが singleTask の挙動だとは思うのですが、この2つを両立させる方法はあるのでしょうか。
(singleTaskを指定しないで、URLスキームから別タスクとして起動させられればベストだと思うのですが…)

よろしくお願いします。

Hirokazu Fukami

unread,
Sep 10, 2014, 1:05:14 AM9/10/14
to android-g...@googlegroups.com
こんにちはfkmです。

TopActivityからSubActivityに遷移時、finish()を呼べばよい という話では?
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。
> このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

DiceK

unread,
Sep 10, 2014, 10:13:04 PM9/10/14
to android-g...@googlegroups.com
fkmさん、ありがとうございます。

finish()を呼ぶ形にしても解決はされませんでした。

singleTaskをつけた状態での話だと思うのですが、finish()をしたとしても、
Sub表示時にホームボタン押下でバックに移った後、ランチャーのアイコンから起動するとTopが表示されます。



2014年9月10日水曜日 14時05分14秒 UTC+9 fkm:
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。

DiceK

unread,
Sep 21, 2014, 10:04:47 PM9/21/14
to android-g...@googlegroups.com
自己解決しました。
(若干無理矢理ではありますが、Topの前にもう一つSplashを用意して、ワンクッション置いた起動をさせました)

貴重なスペースを頂きまして、ありがとうございました。
Reply all
Reply to author
Forward
0 new messages