質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

2550閲覧

Androidのアプリ履歴ボタンとホームのアプリアイコンを選択したときの違い

rkrd

総合スコア35

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2017/08/17 12:35

AndroidアプリでMainActivityからSubActivityを表示しています。
SubActivity表示時にアプリをバックグラウンドにして、端末の□ボタン(アプリ履歴ボタン)からアプリに戻ってくると、
SubActivityが表示された状態でフォアグラウンドに戻ってきます。
ですが、同じくSubActivity表示時にバックグラウンドにして、ホーム(Android標準ホーム)の本アプリアイコンをタップすると、
MainActivityが表示された状態でフォアグラウンドに戻ってきます。

URLスキーム受信時にアプリの多重起動を防止するために、AndroidManifestでは以下のようにsingleTaskを設定しています。

XML

1 <activity 2 android:name=".MainActivity" 3 android:launchMode="singleTask" 4 android:screenOrientation="portrait" 5 android:theme="@style/AppTheme.NoActionBar"> 6 <intent-filter> 7 <action android:name="android.intent.action.MAIN"/> 8 <category android:name="android.intent.category.LAUNCHER"/> 9 </intent-filter> 10 <intent-filter> 11 <action android:name="android.intent.action.VIEW"/> 12 <category android:name="android.intent.category.DEFAULT"/> 13 <category android:name="android.intent.category.BROWSABLE"/> 14 <data android:scheme="@string/urlscheme"/> 15 </intent-filter> 16 </activity>

アプリの多重起動を抑えつつ、アプリ履歴から復帰時とホームのアイコンからの復帰時に、
両パターンともSubActivityを表示してフォアグラウンドに戻ってくるようにするには、どのような設定が必要なのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

うろ覚えですが、PendingIntentを使ってフォアに呼び戻せば、いけると思います。

Intent MainIntent = getPackageManager() .getLaunchIntentForPackage(getPackageName()) .setPackage(null) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); // The PendingIntent to launch activity. PendingIntent activityPendingIntent = PendingIntent.getActivity(this, 0,MainIntent, 0);

こんな感じ。

起動時に必ずSharedPreferenceなどDBを確認して、状態を管理するのが一番良いと思います。

投稿2017/08/18 17:10

Yuinyan

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rkrd

2017/08/21 07:41

すみません、PendingIntentは初見だったので調べましたが、 ウィジェットやステータスバーの通知領域からの呼び出し時に使う使いみちしか見つからず、 ホームでアイコンタップでフォアグラウンド戻ってきた時にどのように使用するかがわかりませんでした。 とりあえず、履歴ボタンで復帰時と、ホームのアイコンタップで復帰時で、onNewIntent()の呼び出しの有無が違っていたので、そこでなんとかしようかと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問