@Override protected List<Avatar> doInBackground(Void... params) { // reuse cached avatars avatars = avatarManager.getAvatarList(); // contains accounts who don`t have avatars yet List<Account> acts = avatarManager.getAccountsWithoutAvatars(); // contains new avatars in order to persist them to database List<Avatar> newAvatars = new ArrayList<Avatar>(acts.size()); // load avatars from server for (Account account : acts) { httpConnection = new SeafConnection(account); String avatarRawData = null; try { avatarRawData = httpConnection.getAvatar(account.getEmail(), avatarSize); } catch (SeafException e) { e.printStackTrace(); return avatars; } Avatar avatar = avatarManager.parseAvatar(avatarRawData); if (avatar == null) continue; avatar.setSignature(account.getSignature()); avatars.add(avatar); newAvatars.add(avatar); } // save new added avatars to database avatarManager.saveAvatarList(newAvatars); return avatars; }