こんにちは。
別問題かもですが、追記したほうが分かりやすいので追記させていただきます。
zakiさんの方法(finishをオーバーライド)でNotificationActivityからMainActivityを強制的に立ち上げることができました。
が、1つ問題が出てきました。
NotificationActivityから強制起動したMainActivity(仮にMainActivity^とします)が表示されているときに、さらにPushを飛ばすと
実はNotificationActivityが表示されません。
(Logで見るとNotificationActivityのonCereateを通ってすらいません。)
平たく言うと、「Intentを飛ばしたのにActivityが起動しない」というすごく奇妙な現象です。
これは、AndroidManifestのNotificationActivityにandroid:launchMode="singleTask"を追加することで解決はします。
解決はしますが、「なぜ強制起動したMainActivityは通常の動きとは異なるのか?」という問題が残ります。
なぜこれが問題かというと、私が作っている物がライブラリであるためです(私事で申し訳ありません)
つまり、MainActivityはライブラリを利用しているアプリの開発者の作っている部分で、そのMainActivityが通常の動きとは異なっていることの理由がはっきり
しないことにはリリースできない状態になっています。
狙った動きをするようになったからと言って、この機能が本当に「ライブラリ利用者に悪い影響を及ぼさない」ことがはっきりしてないというわけです。
どなたかお力を貸していただけませんでしょうか。
どうぞよろしくお願いします。
========
*今回の問題の概要図
(タスクの図で示します)
①アプリが死んでいる状態でPush。ノーティフィケーションよりNotificationActivity起動
(Logを見るとIntent.FLAG_ACTIVITY_NEW_TASKで起動しているようです)*1
--------------------------
|NotificationActivity
--------------------------
↓
②戻るボタンタップ(intent.setClassName(Context packageContext, String className)で起動。このときIntentのフラグは何もつけていません)
--------------------------
|MainActivity^
--------------------------
↓
③さらにPush。ノーティフィケーションよりNotificationActivity起動*1
--------------------------
|MainActivity^
--------------------------
。。。この時タスクの状態は本来はこうなるべきですよね。しかし実際は③のようになります。
--------------------------------------------------
|MainActivity^ | NotificationActivity
--------------------------------------------------
*1 ログ詳細
09-26 19:08:05.440: W/ActivityManager(598): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=***略***.NotificationActivity bnds=[184,414][1016,542] }
2014年8月11日月曜日 10時02分02秒 UTC+9 mun: