前提・実現したいこと
FireBaseからのメッセージを受信したときに
フォアグラウンドでアラートダイアログを表示したいです。
※現在は透明なActivityを使用してダイアログを表示していますが制御が失われます。
発生している問題
FireBaseからのメッセージを受信し、アラートダイアログが表示された後
Androidのタスクボタンを押した場合は
onPauseメソッドに記載したfinishでActivityが正常にクリアされ
元々表示していたアプリの画面が表示されます。
しかし、ホームボタンボタンを押してアプリが一度バックグラウンドに移動した後は
タスク一覧からアプリを起動→ダイアログのOKボタンに設定しているfinishを実行
タスク一覧にアプリが再度表示される→ダイアログのOKボタンに設定しているfinishを実行
となり、透明なActivityがエンドレスループし
元々表示していたアプリの画面に復帰できなくなります。
タスクボタンもホームボタンも押したあとは
onPauseメソッドを経由すると思いますが
なぜホームボタンを押した場合の挙動が異なるのかが分かりません...
該当のソースコード
MyFirebaseMessagingService.java
java
1public class MyFirebaseMessagingService extends FirebaseMessagingService { 2 @Override 3 public void onMessageReceived(RemoteMessage remoteMessage) { 4 ... 5 6 // AlertDialogを実装したActivityを起動. 7 Intent pushIntent = new Intent(this, AlertDialogActivity.class); 8 pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 9 pushIntent.putExtra(PUSH_MESSAGE, message); 10 startActivity(pushIntent); 11 12}
AlertActivity.java
java
1public class AlertDialogActivity extends AppCompatActivity { 2 @Override 3 public void onPause() { 4 super.onPause(); 5 6 AlertDialogActivity.this.finish(); 7 } 8}
AndroidManifest.xml
xml
1 <activity 2 android:name=".AlertDialogActivity" 3 android:label="@string/app_name" 4 android:theme="@style/TransparencyTheme" 5 android:launchMode="singleInstance"> 6 </activity>
試したこと
LocalBloadCastを利用したローカルインテントの場合も試しましたが同様の挙動でした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。