If the data is already loaded (as it seems in your 'mAddresses' variable which is in the Loader) you need to call forceLoad() to get it to load again:
http://developer.android.com/reference/android/content/Loader.html#forceLoad%28%29
Edit: ...after some investigation... To answer your original question, unhelpfully: 'because it doesn't'!
From the source for LoaderManager:
// Notify of the new data so the app can switch out the old data before
// we try to destroy it.
if (mData != data || !mHaveData) {
mData = data;
mHaveData = true;
if (mStarted) {
callOnLoadFinished(loader, data);
}
}
RE your problem, I'm assuming that you're continually adding to the List in loadInBackground() rather than clearing and starting again.
The cleanest way is to build a new ArrayList each time by passing in the existing List as an argument to the ArrayList() constructor, it will copy the contents.
Or you could override deliverResult(), it's called from the main thread so modifying mAdapter is OK.
Or forget the Loader and just use a much simpler AsyncTask... although that depends on where your data actually comes from.