On the official Android developers page, you can see all the information related to these two activity states.
onPause () ( http://developer.android.com/training/basics/activity-lifecycle/pausing.html )
When the system calls onPause () for your activity, it technically means that your activity is still partially visible, but most often it indicates that the user is leaving this operation, and this will soon enter the Stop state. Usually you should use the onPause () callback in:
Stop animation or other ongoing activities that the processor may consume. Commit unsaved changes, but only if users expect these changes when they leave (for example, an email project). The release of system resources, such as broadcast receivers, knobs for sensors (such as GPS) or any resources that may affect battery life, while your activity is paused and the user does not need them.
As a rule, you should not use onPause () to store user changes (for example, personal information entered into the form) for permanent storage. the only time when you should save user changes to persistent storage within onPause () is when you are sure that users expect the changes to be automatically saved (for example, when composing email). However, you should avoid doing heavy CPU work during onPause (), for example, writing to databases, as it can slow down the visible transition to the next one (you should instead perform operations to disconnect a large load during onStop ()).
You should keep the number of operations performed by the onPause () method relatively simple in order to ensure a quick transition to the user if your activity is actually stopped.
Note. When your activity is paused, the Activity instance is resident in memory and called when activity resumes. You do not need to reinitialize the components that were created during any of the callback methods leading to the resumed state.
onStop () ( http://developer.android.com/training/basics/activity-lifecycle/stopping.html )
When your activity receives a call to the onStop () method, there is no longer visible and should release almost all resources that are not necessary until the user uses it. As soon as your activity is stopped, the system can destroy the instance if it needs to restore the Memory system. In extreme cases, the system can simply kill your application process without causing the completion of the action in the onDestroy () callback, so it is important to use onStop () to release resources that may leak memory.
Although the onPause () method is called before onStop (), you should use onStop () to do more intensive shutdown of the processor operations, such as writing information to the database.
When your activity is stopped, the Activity object is stored in memory and called when activity resumes. You do not need to reinitialize the components that were created during any callback to the methods leading to the Resumed state. The system also keeps track of the current state for each view in the layout, so if the user entered the text in the EditText widget, this content is saved so you do not need to save and restore it.
Note. Even if the system destroys your activity when it stops, it still saves the state of View objects (for example, text in EditText) in the Bundle (blob key-value pairs) and restores them if the user goes to the same instance of activity (next In the lesson more is said about using the Bundle to save other state data if your activity is destroyed and recreated).