I have a ‘list’ activity which starts an ‘article’ activity when clicked.
I also have push notifications which opens the ‘article’ activity directly.
I changed the back button behavior in the ‘article’ activity to start the ‘list’ activity, when coming from a notification so that the user will go back to the article list.
The problem is when the app is already opened in the background and I open a notification – it just brings it back to front.
What I want to achieve is open the right article when clicking a notification and going back to the ‘list’ activity, without having the possibility the the list activity will be open twice.
I tried to separate the ‘article’ task and create new task in the notification intent but then it would open separate ‘list’ activities when opening multiple notifications and clicking back.
What is the correct way to define the activities’ tasks and intent flags to achieve my goal?
EDIT:
Manifest part:
<activity android:name="ListFeed" android:configChanges="orientation|screenLayout" android:launchMode="singleInstance" android:screenOrientation="unspecified"
android:taskAffinity="com.app.MyTask"></activity>
<activity android:name="Article" android:launchMode="standard" android:configChanges="orientation|screenLayout" android:screenOrientation="unspecified"
android:taskAffinity="com.app.MyTask"></activity>
Notification intent:
Intent notificationIntent = new Intent(context, Article.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, notificationID, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
Thanks!!
what i got from your question is that
1) you have listActivity A
2) ArticalActivity B.
i) And first you want to open Activity A whenever back from B, Correct? for that you can use
dispatchKeyEvent, listen to Back button event and start activity A. or by using below codeii) you want to open only single instance of Activity A(list). for this you can basically use
launchModein Activity A’s Manifest declration assingleInstance.you can read docs for launch mode
let me know if i missed anything.