Fix a race condition when switching between settings panels

The fragment was removed while the images were being loaded, so the
activity was null. This fix holds on to the Resources object.

Bug: 7490425
Change-Id: Ic2d8dd3c620fc34ce8255104001e17b39f828601
This commit is contained in:
Amith Yamasani
2012-11-14 16:23:40 -08:00
parent 42d9768420
commit 5cdc937251

View File

@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
@@ -477,6 +478,7 @@ public class UserSettings extends SettingsPreferenceFragment
}
private void loadIconsAsync(List<Integer> missingIcons) {
final Resources resources = getResources();
new AsyncTask<List<Integer>, Void, Void>() {
@Override
protected void onPostExecute(Void result) {
@@ -485,17 +487,16 @@ public class UserSettings extends SettingsPreferenceFragment
@Override
protected Void doInBackground(List<Integer>... values) {
if (getActivity() == null) return null;
for (int userId : values[0]) {
Bitmap bitmap = mUserManager.getUserIcon(userId);
Drawable d = new BitmapDrawable(getResources(), bitmap);
Drawable d = new BitmapDrawable(resources, bitmap);
mUserIcons.append(userId, d);
}
return null;
}
}.execute(missingIcons);
}
private void assignProfilePhoto(final UserInfo user) {
if (!Utils.copyMeProfilePhoto(getActivity(), user)) {
assignDefaultPhoto(user);