package net.dev123.yibo.service.task; import java.util.ArrayList; import java.util.List; import net.dev123.commons.Paging; import net.dev123.commons.util.ListUtil; import net.dev123.exception.LibException; import net.dev123.mblog.MicroBlog; import net.dev123.mblog.entity.Group; import net.dev123.yibo.common.Constants; import net.dev123.yibo.common.GlobalVars; import net.dev123.yibo.db.GroupDao; import net.dev123.yibo.db.LocalAccount; import android.content.Context; import android.os.AsyncTask; import android.util.Log; public class GroupCacheTask extends AsyncTask<Void, List<Group>, Integer> { private static final String TAG = "GroupCacheTask"; private MicroBlog microBlog; private LocalAccount account; private GroupDao dao; private int cacheCount; private int cycleTime = 2; private int pageSize = 100; public GroupCacheTask(Context context, LocalAccount account) { this.account = account; this.microBlog = GlobalVars.getMicroBlog(account); this.dao = new GroupDao(context); } @Override protected Integer doInBackground(Void... params) { cacheCount = 0; if (microBlog == null) { return cacheCount; } List<Group> groupList = new ArrayList<Group>(); Paging<Group> paging = new Paging<Group>(); paging.setPageSize(pageSize); String userId = account.getUser().getId(); List<Group> tempList = null; while (paging.moveToNext() && cycleTime-- > 0) { try { tempList = microBlog.getGroups(userId, paging); if (ListUtil.isNotEmpty(tempList)) { groupList.addAll(tempList); } } catch (LibException e) { if (Constants.DEBUG) Log.e(TAG, "Task", e); } } if (ListUtil.isNotEmpty(groupList)) { dao.merge(account, groupList); } return cacheCount; } @Override protected void onPostExecute(Integer result) { super.onPostExecute(result); if (Constants.DEBUG) { Log.d(TAG, "cache group count: " + cacheCount); } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getCycleTime() { return cycleTime; } public void setCycleTime(int cycleTime) { this.cycleTime = cycleTime; } }