12

Can you please explain which activity life cycle method is called when a dialog comes on the application? I'm confused whether its is calling onResume() or onPause() method.

Thanks

0

9 Answers 9

27

OnPause() is not called in all types of dialogs.

For Example, when an AlertDialog or DialogFragment is used, it will never call OnPause(), since they are a part of the activity.

However, if a dialog appears from System for a permission or some other app shows a Dialog over the activity it will only call OnPause() since a new activity isn't started and only the foreground focus is shifted from the activity to the Dialog Box.

For Example, when we enable Whatsapp to send a message popup, if the popup comes while your activity is running, it will call OnPause() only.

You should try this on your own for better understanding.

Sign up to request clarification or add additional context in comments.

Comments

16

Watch out, few of proposed answers are wrong. This old one have most of truth, but not whole truth. And that new one seems to complement my answer (haven't checked by myself).

This is not true that onPause is called after dialog appears. This dialog would have to be written on separate Activity to cause onPause call. But dialogs are usually written on DialogFragment from support library - reference

you should use a DialogFragment as a container for your dialog

Check also: Android: Under what circumstances would a Dialog appearing cause onPause() to be called?

4 Comments

Just want to know, is any activity's lifecycle event called when dialog.dismiss() called(Here dialog extends Dialog)
@B.shruti android.app.Dialog? Nope, dismiss doesn't execute any Activity callbacks. Why it should?developer.android.com/guide/components/activities/… - you could understand that for dismiss Activity goes to background. NO. As I said in the answer: dialog would have to be written on separate Activity to cause onPause call. Like here: stackoverflow.com/questions/1979369/… Do not use Dialog, especially in MVVM era: stackoverflow.com/questions/7977392/…
what about an alertdialog instead of a dialog fragment?
@Dr.aNdRO DialogFragment synchronizes its lifecycle with FragmentManager. developer.android.com/reference/android/app/… so it's added to back stack and back button press is handled. It's broader topic, cause actually you could use AlertDialog. As usually, it depends. More: developer.android.com/reference/android/app/DialogFragment
12

onPause is not called because you are still in current activity, so when you are showing dialog on current activity no activity life cycle method will called.

Comments

3

Activity inside if open any dialog, then that dialog not affect to activity life cycle. so i already try this one. so onPause() not called. if any doubt please implement your self you can get more clarity.

Comments

2

OnPause() is not called in all types of dialogs, check other answers for more details since I won't copy everything here.

2 Comments

this is not right. when dialog appears on the current activity no life cycle method is called. You can verify it by adding logs to your life cycle activity.
This should not be an accepted answer.
2

I have checked the lifecycle of Activity is changed or not using a AlertDialog and I can see no changes in the lifecycle of activity. When a dialog appears no onPause is called and when a dialog is cancelled no onResume is called.

No lifecycle changes happens if the dialog is called

 D/lc1: onCreate
 D/lc1: onStart
 D/lc1: onResume
 I/System.out: lc1 AlertDialog is created
 I/System.out: lc1 clicked yes
 I/System.out: lc1 AlertDialog is created
 I/System.out: lc1 clicked no
 I/System.out: lc1 AlertDialog is created
 I/System.out: lc1 clicked cancel
 D/lc1: onPause
 D/lc1: onStop

Comments

1

it calls onPause()

When a dialog comes on top of an existing activity, then existing activity will move to partially invisible state by calling onPause().

1 Comment

Existing activity will move to onPause() state only if newly displayed dialog is created with activity as dialog themed. There won't be any life cylce change in activity if dialog is created with DialogFragment.
0

This is given on the official Android website

https://developer.android.com/guide/components/activities/activity-lifecycle

The opening of a new, semi-transparent activity, such as a dialog, pauses the activity it covers. As long as the activity is partially visible but not in focus, it remains paused.

Comments

0

no lifecycle method will be called especially onPause and onStop.

Eg- if you display a bottomsheet dialog it will just display the bottom sheet but you won't get any callbacks in your activity.

you can verify this by adding logs to the lifecycle methods

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.