Просмотр исходного кода

任务缓存修改为缓存永久,并且初始化后先获取缓存,再获取最新数据,新老数据相同则不刷新

zengjiebin лет назад: 7
Родитель
Сommit
22cb5e5f58

+ 65 - 97
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -161,7 +161,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     //recyclerview
     private TryMakeMoneyAdp tryMakeMoneyAdp;
-    private int position = 0;
+    private List<TaskAcceptedEty> allTaskAcceptedTaskList = ListUtil.emptyList();
     private List<TaskReleaseEty> releaseEtyLists = new ArrayList<>();
     private List<SlideshowEty> slideshowEtyLists = new ArrayList<>();
     private List<String> slideshowTitleList = new ArrayList<>();
@@ -182,14 +182,10 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                     loadUserInfo();
                     break;
                 case 1:
-                    position = 0;
-                    List<TaskAcceptedEty> allTaskAcceptedTaskList = DataUtil.getInstance().getAllTaskAcceptedTaskList();
+                    int position = 0;
                     if(!ListUtil.isEmpty(allTaskAcceptedTaskList)){
-                        tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, allTaskAcceptedTaskList), position);
-                        position++;
+                        tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, allTaskAcceptedTaskList), position++);
                     }
-                    DataUtil.getInstance().checkOtherList(allTaskAcceptedTaskList, releaseEtyLists);
-                    tryMakeMoneyAdp.setIs_succession(3);
                     if(!ListUtil.isEmpty(releaseEtyLists)) {
                         tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position);
                     }
@@ -300,6 +296,9 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     }
 
+    /**
+     * 初始化数据
+     */
     public void initData() {
         SysAppUtil.checkNet(new Action1<Integer>() {
             @Override
@@ -313,56 +312,30 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 }
             }
         });
-        initACacheData();
-    }
-    private void initACacheData(){
-        if (upview1 != null) {
-            //停止滚动
-            upview1.stopFlipping();
-            upview1.startFlipping();
-        }
-        if (homepageItemNoticeMv != null) {
-            //停止滚动
-            homepageItemNoticeMv.stopFlipping();
-            homepageItemNoticeMv.startFlipping();
-        }
 
         //用户信息
         userEntity = DataUtil.getInstance().getUserEntity();
-        if(userEntity == null){//onResume中从网络获取
-        } else {
+        if(userEntity != null){//在onResume中可以更新最新信息
             loadUserInfo();
         }
-
-        //实时动态
-        List<MoreDataEntity> cacheMoreDataEtyList = DataUtil.getInstance().getCacheList(ApiKey.award_detail, MoreDataEntity.class);
-        if(ListUtil.isEmpty(cacheMoreDataEtyList)){
-            pagePresenter.getAwardDetail();
-        } else {
-            invite(cacheMoreDataEtyList);
-        }
         //任务
-        releaseEtyLists.clear();
-        tryMakeMoneyAdp.clear();
-        tryMakeMoneyAdp.addType(1);
-        tryMakeMoneyAdp.addPresenter(tryMakeMoneyPresenter);
-        for (int i = 0; i < 2; i++) {
-            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.NONE, null));
-        }
         List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task, TaskReleaseEty.class);
-        if (cacheTaskReleaseEtyList == null) {
-            initOtherTaskList();
-        } else {
-            releaseEtyLists.clear();
+        if (cacheTaskReleaseEtyList != null) {//在onResume中可以更新最新数据
             releaseEtyLists.addAll(cacheTaskReleaseEtyList);
             mHanderl.sendEmptyMessage(1);
         }
 
+
+        //实时动态
+        List<MoreDataEntity> cacheMoreDataEtyList = DataUtil.getInstance().getCacheList(ApiKey.award_detail, MoreDataEntity.class);
+        if(!ListUtil.isEmpty(cacheMoreDataEtyList)){
+            invite(cacheMoreDataEtyList);
+        }
+
         //公告
         List<BulletinEnty> cacheBulletinEtyList = DataUtil.getInstance().getCacheList(ApiKey.bulletin, BulletinEnty.class);
         if(ListUtil.isEmpty(cacheBulletinEtyList)){
             homepageItemNoticeLayout.setVisibility(View.GONE);
-            pagePresenter.bulletin(null);
         } else {
             bulletinEntyLists.clear();
             bulletinEntyLists.addAll(cacheBulletinEtyList);
@@ -372,7 +345,6 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         List<SlideshowEty> cacheSlideshowEtyList = DataUtil.getInstance().getCacheList(ApiKey.slideshow, SlideshowEty.class);
         if(ListUtil.isEmpty(cacheSlideshowEtyList)){
             banner.setVisibility(View.GONE);
-            pagePresenter.slideshow(null);
         } else {
             for (SlideshowEty slideshowEty : cacheSlideshowEtyList) {
                 slideshowEty.setObjects(CommonUtil.getInstance().getValue(slideshowEty.getExt()));
@@ -385,7 +357,6 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         List<HomeListEntity> cacheHomeListEtyList = DataUtil.getInstance().getCacheList(ApiKey.home_list, HomeListEntity.class);
         if(ListUtil.isEmpty(cacheHomeListEtyList)){
             home_list_gridview_layout.setVisibility(View.GONE);
-            pagePresenter.homeList();//首页list
         } else {
             home_list_gridview_layout.setVisibility(View.VISIBLE);
             homeListEntitys.addAll(cacheHomeListEtyList);
@@ -412,6 +383,10 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             home_list_gridview_listview.setVisibility(homeListEntitysListview.isEmpty() ? View.GONE : View.VISIBLE);
         }
     }
+
+    /**
+     * 刷新数据
+     */
     public void refreshData() {
         SysAppUtil.checkNet(new Action1<Integer>() {
             @Override
@@ -440,9 +415,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         if (views.size() < 1) {
             pagePresenter.getAwardDetail();
         }
-
-        DataUtil.getInstance().reInitAcceptedTaskList();
-        initOtherTaskList();//任务
+        refreshTaskList();//任务
         pagePresenter.bulletin(null);//公告
         pagePresenter.slideshow(null);//轮播
         pagePresenter.homeList();//首页list
@@ -461,6 +434,9 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         for (int i = 0; i < 2; i++) {
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.NONE, null));
         }
+        tryMakeMoneyAdp.addType(1);
+        tryMakeMoneyAdp.setIs_succession(3);
+        tryMakeMoneyAdp.addPresenter(tryMakeMoneyPresenter);
         recyclerview.setAdapter(tryMakeMoneyAdp);
 
         adpHomeListListview = new AdpHomeListListview(homeListEntitysListview, activity);
@@ -469,7 +445,9 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         home_list_gridview_gv.setAdapter(adpHomeListGrideview);
     }
 
-    private void initOtherTaskList() {
+    private void refreshTaskList() {
+        DataUtil.getInstance().resetTaskListChange();
+        tryMakeMoneyPresenter.returnTask(is_succession, show_game_task);
         RequestParameEty parameEty = new RequestParameEty();
         parameEty.setHashMap(
                 CommonUtil.getInstance()
@@ -534,7 +512,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     @Override
     public void acceptedTaskUpdataView(Object o) {
-
+        refreshTaskList();
     }
 
     @Override
@@ -545,25 +523,24 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void giveUpTaskSuccesView(Object object) {
         G.showToast("取消任务成功");
-        if(object instanceof Integer)
-            DataUtil.getInstance().removeAcceptedTask((Integer) object);
-        else
-            DataUtil.getInstance().reInitAcceptedTaskList();
-        initOtherTaskList();
+        CommonUtil.getInstance().setTAskEnty(null);
+        refreshTaskList();
     }
 
     @Override
     public void giveUpTaskFailView(Object o) {
 
     }
-
+    private int is_succession = 3;//所有
+    private int show_game_task = 1;//包含游戏任务
     @Override
-    public void returnTaskTaskUpdataView(Object o) {
-        BaseMessage baseMessage = (BaseMessage) o;
-        List<TaskAcceptedEty> taskAcceptedEtyList = baseMessage.getDataList(TaskAcceptedEty.class);
-        AutoTaskListUtil.getInstance().loadList(taskAcceptedEtyList);
-        DataUtil.getInstance().reloadAcceptedTaskList(taskAcceptedEtyList);
-        mHanderl.sendEmptyMessage(1);
+    public void returnTaskTaskUpdataView(Object object) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.new_run_task(is_succession, show_game_task));
+        if(isNewData) {
+            BaseMessage baseMessage = (BaseMessage) object;
+            allTaskAcceptedTaskList = baseMessage.getDataList(TaskAcceptedEty.class);
+            mHanderl.sendEmptyMessage(1);
+        }
     }
 
     @Override
@@ -588,11 +565,11 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     @Override
     public void releaseTaskTaskUpdataView(Object object) {
-        if(object instanceof BaseMessage) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task);
+        if(isNewData && object instanceof BaseMessage) {
             List<TaskReleaseEty> releaseEtyList = ((BaseMessage) object).getDataList(TaskReleaseEty.class);
             if (releaseEtyList != null) {
-                releaseEtyLists.clear();
-                releaseEtyLists.addAll(releaseEtyList);
+                releaseEtyLists = releaseEtyList;
                 mHanderl.sendEmptyMessage(1);
             }
         }
@@ -626,24 +603,20 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     @Override
     public void successSlideshow(BaseMessage baseMessage) {
-
-        try {
-            List<SlideshowEty> slideshowEtyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), SlideshowEty.class);
-            if (slideshowEtyList != null && slideshowEtyList.size() > 0) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.slideshow);
+        if(isNewData){
+            List<SlideshowEty> slideshowEtyList = baseMessage.getDataList(SlideshowEty.class);
+            if (ListUtil.isEmpty(slideshowEtyList)) {
+                banner.setVisibility(View.GONE);
+            } else {
                 slideshowEtyLists.clear();
                 for (SlideshowEty slideshowEty : slideshowEtyList) {
                     slideshowEty.setObjects(CommonUtil.getInstance().getValue(slideshowEty.getExt()));
                     slideshowEtyLists.add(slideshowEty);
                     slideshowTitleList.add(slideshowEty.getTitle());
                 }
-
                 bindBanner();
-            } else {
-                banner.setVisibility(View.GONE);
             }
-
-        } catch (Exception e) {
-            e.printStackTrace();
         }
     }
 
@@ -654,36 +627,33 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
     @Override
     public void successbulletin(BaseMessage baseMessage) {
-
-        try {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.bulletin);
+        if(isNewData){
             List<BulletinEnty> bulletinEntyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), BulletinEnty.class);
-            if (bulletinEntyList != null && bulletinEntyList.size() > 0) {
+            if (ListUtil.isEmpty(bulletinEntyList)) {
+                homepageItemNoticeLayout.setVisibility(View.GONE);
+            } else {
                 bulletinEntyLists.clear();
                 bulletinEntyLists.addAll(bulletinEntyList);
                 inviteNotice(bulletinEntyLists);
-            } else {
-                homepageItemNoticeLayout.setVisibility(View.GONE);
             }
-
-        } catch (Exception e) {
-            e.printStackTrace();
         }
     }
 
     @Override
     public void successhomeList(BaseMessage baseMessage) {
         checkAndInitView();
-        try {
-            List<HomeListEntity> homeListEntity = JSONArray.parseArray(
-                    JSONArray.toJSONString(baseMessage.getData()),
-                    HomeListEntity.class
-            );
-            if (homeListEntity != null && homeListEntity.size() > 0) {
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.slideshow);
+        if(isNewData){
+            List<HomeListEntity> homeListEntityList = baseMessage.getDataList(HomeListEntity.class);
+            if (ListUtil.isEmpty(homeListEntityList)) {
+                home_list_gridview_layout.setVisibility(View.GONE);
+            } else {
                 home_list_gridview_layout.setVisibility(View.VISIBLE);
                 homeListEntitys.clear();
                 homeListEntitysGridview.clear();
                 homeListEntitysListview.clear();
-                homeListEntitys.addAll(homeListEntity);
+                homeListEntitys.addAll(homeListEntityList);
                 boolean isShowQB = false;
                 boolean isShowMd = false;
                 for (int i = 0; i < homeListEntitys.size(); i++) {
@@ -705,12 +675,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 adpHomeListGrideview.notifyDataSetChanged();
                 adpHomeListListview.notifyDataSetChanged();
                 home_list_gridview_listview.setVisibility(homeListEntitysListview.isEmpty() ? View.GONE : View.VISIBLE);
-            } else {
-                home_list_gridview_layout.setVisibility(View.GONE);
-
             }
-        } catch (Exception e) {
-            e.printStackTrace();
         }
     }
 
@@ -731,7 +696,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         home_list_gridview_layout.setVisibility(View.GONE);
 
     }
-
+    private int onResumeCount = 0;
     @Override
     public void onResume() {
         super.onResume();
@@ -750,8 +715,11 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             userEntity = result;
             loadUserInfo();
         }
-        Jump2View.getInstance().tryShowNewbieTask(activity, userEntity, newbie_task);
-        DataUtil.getInstance().initACacheAcceptedTaskList();
+        if(DataUtil.getInstance().isTaskListChange())//数据变化才刷新
+            refreshTaskList();
+        if(onResumeCount == 0)//第一次才调用
+            Jump2View.getInstance().tryShowNewbieTask(activity, userEntity, newbie_task);
+        onResumeCount++;
     }
 
     @Override

+ 16 - 3
app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java

@@ -57,8 +57,21 @@ public class TaskHelper {
         this.activity = activity;
         this.release_task_id = release_task_id;
 
-        taskAcceptedEty = DataUtil.getInstance().getTaskAcceptedTaskByReleaseTaskId(release_task_id);
-        initTask(release_task_id);
+        SheepApp.getInstance().getNetComponent().getApiService().getAcceptedTaskDetail(release_task_id)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        taskAcceptedEty = baseMessage.getData(TaskAcceptedEty.class);
+                        initTask(release_task_id);
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        initTask(release_task_id);
+                    }
+                });
     }
     private TaskReleaseEty taskReleaseEty;
     private void initTask(int release_task_id) {
@@ -219,7 +232,7 @@ public class TaskHelper {
                                             .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                                                 @Override
                                                 public void onNext(BaseMessage baseMessage) {
-                                                    DataUtil.getInstance().removeAcceptedTask(taskAcceptedEty.getId());
+                                                    DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
                                                     refreshTask();
                                                 }
 

+ 14 - 5
app/src/main/java/com/sheep/gamegroup/model/util/CacheInterceptor.java

@@ -1,9 +1,12 @@
 package com.sheep.gamegroup.model.util;
 
+import android.text.TextUtils;
+
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import org.afinal.simplecache.ACache;
+import org.afinal.simplecache.ApiKey;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -62,17 +65,23 @@ public class CacheInterceptor implements Interceptor {
                     if (!isPlaintext(buffer)) {
                         return response;
                     }
-
+                    boolean oldEqualsNew = false;
+                    ACache aCache = ACache.get(SheepApp.getInstance());
                     if (contentLength != 0L) {
                         String result = buffer.clone().readString(charset);
-                        ACache aCache = ACache.get(SheepApp.getInstance());
                         if (response.code() == 200 && "GET".equals(request.method())) {//成功则缓存get数据
                             LogUtil.println("sheepLog", "aCache", "key", "=", key);
-                            aCache.put(key, result, DEFAULT_SAVE_TIME);//默认缓存5分钟
-                        } else {
-                            aCache.remove(key);
+                            String oldResult = aCache.getAsString(key);
+                            if(TextUtils.equals(oldResult, result)){
+                                oldEqualsNew = true;
+                                aCache.put(ApiKey.oldEqualsNew(key), "yes");
+                            } else {
+                                aCache.put(key, result);
+                            }
                         }
                     }
+                    if(!oldEqualsNew)
+                        aCache.remove(ApiKey.oldEqualsNew(key));
                 }
             }
         }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyContract.java

@@ -11,7 +11,7 @@ public interface TryMakeMoneyContract {
     interface Presenter{
         void getData(Object o);
         void acceptedTask(RequestParameEty o);//获取已接受的任务
-        void returnTask(int is_succession);//获取我正在运行的任务
+        void returnTask(int is_succession, int show_game_task);//获取我正在运行的任务
         void runGameTask();//获取正在运行的游戏任务
         void releaseTask(RequestParameEty o);//获取正在运行的任务
 

+ 7 - 2
app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyPresenter.java

@@ -52,10 +52,15 @@ public class TryMakeMoneyPresenter implements TryMakeMoneyContract.Presenter {
 
     }
 
+    /**
+     * 获取正在运行的任务
+     * @param is_succession
+     * @param show_game_task: 0 不显示游戏任务 , 1 显示游戏任务
+     */
     @Override
-    public void returnTask(int is_succession) {
+    public void returnTask(int is_succession, int show_game_task) {
 
-        apiService.returnTask(is_succession, 0)
+        apiService.returnTask(is_succession, show_game_task)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {

+ 14 - 227
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -206,46 +206,6 @@ public class DataUtil {
         return JSON.parseObject(cacheData, BaseMessage.class).getDataList(classT);
     }
 
-    /**
-     * 设置key的saveTime缓存时间为当前时间
-     *
-     * @param key
-     */
-    public void setSaveTime(String key) {
-        ACache aCache = ACache.get(SheepApp.getInstance());
-        aCache.put(key + "saveTime", String.valueOf(System.currentTimeMillis()));
-    }
-
-    /**
-     * 获取缓存的key的saveTime时间
-     *
-     * @param key
-     * @return
-     */
-    public long getSaveTime(String key) {
-        ACache aCache = ACache.get(SheepApp.getInstance());
-        return NumberFormatUtils.parseLong(aCache.getAsString(key + "saveTime"));
-    }
-
-    /**
-     * 设置taskAcceptedEty的saveTime缓存时间为time
-     *
-     * @param taskAcceptedEty
-     */
-    public void saveTaskAcceptedSaveTime(TaskAcceptedEty taskAcceptedEty) {
-        ACache aCache = ACache.get(SheepApp.getInstance());
-        aCache.put(TaskAcceptedEty.class.getSimpleName() + taskAcceptedEty.getId() + "saveTime", String.valueOf(taskAcceptedEty.getEnd_time()));
-    }
-
-    /**
-     * 获取taskAcceptedEty的saveTime缓存时间为
-     *
-     * @param taskAcceptedEty
-     */
-    public long getTaskAcceptedSaveTime(TaskAcceptedEty taskAcceptedEty) {
-        ACache aCache = ACache.get(SheepApp.getInstance());
-        return NumberFormatUtils.parseLong(aCache.getAsString(TaskAcceptedEty.class.getSimpleName() + taskAcceptedEty.getId() + "saveTime"));
-    }
 
     /**
      * 获取缓存数据的时间
@@ -257,205 +217,32 @@ public class DataUtil {
         ACache aCache = ACache.get(SheepApp.getInstance());
         aCache.remove(key);
     }
-    //-----------------------------------------缓存数据部分-----------------------------------------------------结束
-    //-----------------------------------------进行任务部分-----------------------------------------------------开始
-
-    private List<TaskAcceptedEty> tryPlayTaskList = ListUtil.emptyList();//其它视为 试玩任务
-    private List<TaskAcceptedEty> sequentialTaskList = ListUtil.emptyList();//连续任务
-    private List<TaskAcceptedEty> gameTaskList = ListUtil.emptyList();//游戏任务
-    private List<TaskAcceptedEty> allTaskAcceptedTaskList = ListUtil.emptyList();
-
-    //获取缓存数据
-    public void initACacheAcceptedTaskList() {
-        List<TaskAcceptedEty> cacheTaskAcceptedEtyList = getCacheList(ApiKey.new_run_task(3), TaskAcceptedEty.class);
-        if (cacheTaskAcceptedEtyList == null) {//无缓存
-            reInitAcceptedTaskList();
-        } else {//有缓存
-            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {//无任务
-                clearAcceptedTaskList();
-            } else {//有任务
-                reloadAcceptedTaskList(cacheTaskAcceptedEtyList);
-            }
-            EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.ONFRESH_FGT_FAMLLSHEEP));
-        }
-    }
-
-    //刷新数据
-    public void reInitAcceptedTaskList() {
-        reInitAcceptedTaskList(null);
-    }
-
-    //刷新数据
-    public void reInitAcceptedTaskList(final Action1<BaseMessage> action1) {
-        SheepApp.getInstance().getNetComponent().getApiService().returnTask(3, 1)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        reloadAcceptedTaskListAndSaveTime(baseMessage.getDataList(TaskAcceptedEty.class));
-                        AutoTaskListUtil.getInstance().loadList(baseMessage.getDataList(TaskAcceptedEty.class));
-                        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.ONFRESH_FGT_FAMLLSHEEP));
-                        if (action1 != null)
-                            action1.call(baseMessage);
-                    }
-
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        clearAcceptedTaskList();
-                        if (action1 != null)
-                            action1.call(null);
-                    }
-                });
-    }
 
-    public void reloadAcceptedTaskListAndSaveTime(List<TaskAcceptedEty> acceptedTaskList) {
-        setSaveTime(ApiKey.new_run_task(3));
-        clearAcceptedTaskList();
-        for (TaskAcceptedEty taskAcceptedEty : acceptedTaskList) {
-            saveTaskAcceptedSaveTime(taskAcceptedEty);
-            addAcceptedTask(taskAcceptedEty);
-        }
-    }
-
-    public void reloadAcceptedTaskList(List<TaskAcceptedEty> acceptedTaskList) {
-        clearAcceptedTaskList();
-        for (TaskAcceptedEty taskAcceptedEty : acceptedTaskList) {
-            addAcceptedTask(taskAcceptedEty);
-        }
-    }
-
-    public List<TaskAcceptedEty> getAllTaskAcceptedTaskList() {
-        checkTaskList(allTaskAcceptedTaskList);
-        return allTaskAcceptedTaskList;
-    }
-
-    private void clearAcceptedTaskList() {
-        tryPlayTaskList.clear();
-        sequentialTaskList.clear();
-        gameTaskList.clear();
-        allTaskAcceptedTaskList.clear();
-    }
-
-    public void addAcceptedTask(TaskAcceptedEty taskAcceptedEty) {
-        if (taskAcceptedEty != null && taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().getTask() != null) {
-            switch (taskAcceptedEty.getRelease_task().getTask().getTask_type()) {
-                case 1000://连续任务
-                    ListUtil.addAll(sequentialTaskList, taskAcceptedEty);
-                    break;
-                case 1002:
-                case 1003:
-                case 1004://游戏任务
-                    ListUtil.addAll(gameTaskList, taskAcceptedEty);
-                    break;
-                default://其它视为 试玩任务
-                    ListUtil.addAll(tryPlayTaskList, taskAcceptedEty);
-                    break;
-            }
-            ListUtil.addAll(allTaskAcceptedTaskList, taskAcceptedEty);
-        }
-    }
-
-    //清除并重置正在进行的任务的时间
-    private void checkTaskList(List<TaskAcceptedEty> taskList) {
-        final long saveTime = getSaveTime(ApiKey.new_run_task(3));
-        if (saveTime > 0) {
-            ListUtil.removeItem(taskList, new ListUtil.CallBack<TaskAcceptedEty, Boolean>() {
-                @Override
-                public Boolean call(TaskAcceptedEty taskAcceptedEty) {
-                    if(taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().getDeadline().equals("永久")){//永久任务
-                        return false;
-                    }
-                    long endTime = getTaskAcceptedSaveTime(taskAcceptedEty);
-                    long newEndTime = endTime - (System.currentTimeMillis() - saveTime) / 1000;
-                    if (newEndTime < 1) {//时间到了,删除该任务
-                        return true;
-                    }
-                    taskAcceptedEty.setEnd_time(newEndTime);//重置时间
-                    return false;
-                }
-            });
-        } else {
-            setSaveTime(ApiKey.new_run_task(3));
-        }
-    }
-
-    public List<TaskAcceptedEty> getTryPlayTaskList() {
-        checkTaskList(tryPlayTaskList);
-        return tryPlayTaskList;
-    }
-
-
-    public List<TaskAcceptedEty> getSequentialTaskList() {
-        checkTaskList(sequentialTaskList);
-        return sequentialTaskList;
-    }
-
-    public List<TaskAcceptedEty> getGameTaskList() {
-        checkTaskList(gameTaskList);
-        return gameTaskList;
+    public boolean isNewData(String key) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        return TextUtils.equals(aCache.getAsString(key), "yes");
     }
 
+    //-----------------------------------------缓存数据部分-----------------------------------------------------结束
+    //-----------------------------------------进行任务部分-----------------------------------------------------开始
+    private boolean taskListChange = false;
     /**
-     * 通过is_succession来获取对应的正在进行的任务列表
-     * @param is_succession
+     * 是否首页正在运行的任务与发布的任务列表发生变化
      * @return
      */
-    public List<TaskAcceptedEty> getTaskAcceptedTaskList(int is_succession) {
-        switch (is_succession) {
-            case 1://连续任务
-                return getSequentialTaskList();
-            case 0:
-            default:
-                return getTryPlayTaskList();
-        }
+    public void resetTaskListChange() {
+        taskListChange = false;
     }
-
     /**
-     * 根据releaseTaskId来获取对应的正在进行的任务
-     *
-     * @param releaseTaskId
+     * 是否首页正在运行的任务与发布的任务列表发生变化
      * @return
      */
-    public TaskAcceptedEty getTaskAcceptedTaskByReleaseTaskId(int releaseTaskId) {
-        List<TaskAcceptedEty> allTaskAcceptedTaskList = getAllTaskAcceptedTaskList();
-        if (allTaskAcceptedTaskList != null) {
-            for (TaskAcceptedEty taskAcceptedEty : allTaskAcceptedTaskList) {
-                if (taskAcceptedEty != null && taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().getId() == releaseTaskId)
-                    return taskAcceptedEty;
-            }
-        }
-        return null;
+    public boolean isTaskListChange() {
+        return taskListChange;
     }
 
-    public TaskAcceptedEty removeAcceptedTask(final int acceptedId) {
-        List<TaskAcceptedEty> removeList = ListUtil.removeItem(allTaskAcceptedTaskList, new ListUtil.CallBack<TaskAcceptedEty, Boolean>() {
-            @Override
-            public Boolean call(TaskAcceptedEty taskAcceptedEty) {
-                return taskAcceptedEty == null || taskAcceptedEty.getId() == acceptedId;
-            }
-        });
-        if (ListUtil.isEmpty(removeList)) {
-            return null;
-        }
-        clearCache(ApiKey.new_run_task(3));
-        return removeList.get(0);
-    }
-
-    //检查发布任务中有没有正在运行的任务,有就去掉
-    public void checkOtherList(final List<TaskAcceptedEty> taskAcceptedEtyList, List<TaskReleaseEty> releaseEtyLists){
-        if(!ListUtil.isEmpty(taskAcceptedEtyList) && !ListUtil.isEmpty(releaseEtyLists)){
-            ListUtil.removeItem(releaseEtyLists, new ListUtil.CallBack<TaskReleaseEty, Boolean>() {
-                @Override
-                public Boolean call(TaskReleaseEty taskReleaseEty) {
-                    for (TaskAcceptedEty taskAcceptedEty : taskAcceptedEtyList) {
-                        if(taskAcceptedEty != null && taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().equals(taskReleaseEty))
-                            return true;
-                    }
-                    return false;
-                }
-            });
-        }
+    public void setTaskListChange(boolean taskListChange) {
+        this.taskListChange = taskListChange;
     }
     //-----------------------------------------进行任务部分-----------------------------------------------------结束
 }

+ 20 - 31
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -234,8 +234,8 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     @Override
     public void initData() {
         if (releaseTaskId != -1 && !isGetTaskDesc) {
-            isGetTaskDesc = true;
-            accepteTaskDetail(releaseTaskId);
+            isGetTaskDesc = false;
+            getAcceptedTaskDetail(releaseTaskId);
             return;
         }
     }
@@ -862,23 +862,16 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     }
 
                     @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        DataUtil.getInstance().reInitAcceptedTaskList(new Action1<BaseMessage>() {
-                            @Override
-                            public void call(BaseMessage baseMessage) {
-                                hideProgress();
-                                if(baseMessage != null) {
-                                    gettaskAcceptedEty = DataUtil.getInstance().getTaskAcceptedTaskByReleaseTaskId(releaseTaskId);
-                                    taskReleaseEty = gettaskAcceptedEty.getRelease_task();
-                                    taskReleaseEty.setIs_running(true);
-                                    taskReleaseEty.getTask().setRelease_task_id(taskReleaseEty.getId());
-                                    CommonUtil.getInstance().setTAskEnty(taskReleaseEty.getTask());
-                                    empty_view.setVisibility(View.GONE);
-                                    initWigget();
-                                    isGetTaskDesc = false;
-                                }
-                            }
-                        });
+                    public void onNext(BaseMessage baseMessage) {//领取任务成功
+                        hideProgress();
+                        taskReleaseEty.setIs_running(true);
+                        taskReleaseEty.getTask().setRelease_task_id(taskReleaseEty.getId());
+                        CommonUtil.getInstance().setTAskEnty(taskReleaseEty.getTask());
+
+                        DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
+
+                        isGetTaskDesc = false;
+                        getAcceptedTaskDetail(releaseTaskId);
 
                     }
                 });
@@ -979,12 +972,12 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         }
     }
 
-    private boolean isGetTaskDesc = false;
+    private boolean isGetTaskDesc = false;//是否需要获取TaskReleaseEty
 
     public void freshData() {
         if (releaseTaskId != -1 && !isGetTaskDesc && !isFresh) {
             isGetTaskDesc = true;
-            accepteTaskDetail(releaseTaskId);
+            getAcceptedTaskDetail(releaseTaskId);
         }
     }
 
@@ -1171,20 +1164,16 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     /**
      * 获取接受的任务详情
      */
-    private void accepteTaskDetail(final int releaseTaskId){
+    private void getAcceptedTaskDetail(final int releaseTaskId){
         showProgress();
         CommonUtil.getInstance().getTaskAllDetail(releaseTaskId, new Action1<BaseMessage>() {
                     @Override
                     public void call(BaseMessage baseMessage) {
-                        try{
-                            if(baseMessage.getCode() == 0)
-                                gettaskAcceptedEty = baseMessage.getData(TaskAcceptedEty.class);
-                        }catch (Exception e){
-                            e.printStackTrace();
-                        }
-                        if(gettaskAcceptedEty == null || gettaskAcceptedEty.getRelease_task() == null){//不是正在进行的任务
+                        if(baseMessage.getCode() == 0)
+                            gettaskAcceptedEty = baseMessage.getData(TaskAcceptedEty.class);
+                        if(isGetTaskDesc && gettaskAcceptedEty.getRelease_task() == null) {//需要获取taskReleaseEty
                             taskReleaseEty = DataUtil.getInstance().getCacheResult(ApiKey.releaseTaskDesc(releaseTaskId), TaskReleaseEty.class);
-                            if(taskReleaseEty == null) {//没有缓存的任务详情
+                            if (taskReleaseEty == null) {//没有缓存的任务详情
                                 presenter.taskDesc(releaseTaskId);
                             } else {//获取到缓存的任务详情
                                 hideProgress();
@@ -1192,7 +1181,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                                 initWigget();
                                 isGetTaskDesc = false;
                             }
-                        } else {//是正在运行的任务
+                        } else {
                             hideProgress();
                             taskReleaseEty = gettaskAcceptedEty.getRelease_task();
                             empty_view.setVisibility(View.GONE);

+ 4 - 8
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -82,7 +82,6 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         int position = 0;
         if(!ListUtil.isEmpty(acceptedEtyList))
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, acceptedEtyList), position++);
-        DataUtil.getInstance().checkOtherList(acceptedEtyList, releaseEtyLists);
         if(!ListUtil.isEmpty(releaseEtyLists))
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position++);
         if(!ListUtil.isEmpty(releaseEtyListsBegin))
@@ -201,9 +200,9 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         if(isFirstCache){
             List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
             if(isGameTask) {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getGameTaskList();
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
             } else {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getTaskAcceptedTaskList(is_succession);
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(0, task_type, is_succession), TaskAcceptedEty.class);
             }
             if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
                 acceptedEtyList.clear();
@@ -215,7 +214,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
             if(isGameTask){
                 presenter.runGameTask();
             } else {
-                presenter.returnTask(is_succession);
+                presenter.returnTask(is_succession, 0);
             }
         }
     }
@@ -265,10 +264,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void giveUpTaskSuccesView(Object object) {
         G.showToast("取消任务成功");
         CommonUtil.getInstance().setTAskEnty(null);
-        if(object instanceof Integer)
-            DataUtil.getInstance().removeAcceptedTask((Integer) object);
-        else
-            DataUtil.getInstance().reInitAcceptedTaskList();
+        DataUtil.getInstance().setTaskListChange(true);
         refreshData();
     }
 

+ 8 - 2
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -36,6 +36,8 @@ public class ApiKey {
     public static final String get_info = "app/user/get_info/";
     //award_detail
     public static final String award_detail = "app/user/award_detail?page=0&per_page=100";
+    //游戏任务中的正在进行的任务
+    public static final String run_game_task = "app/accepted_task/run_game_task";
     //游戏任务中的我的游戏
     public static final String my_games = "app/game_consumption/my_games?page=1&per_page=100";
     //首页获取所有发布的热门任务(试玩任务、游戏任务、连续任务)
@@ -45,8 +47,8 @@ public class ApiKey {
         return String.format(Locale.CHINA, "app/release_task?page=1&per_page=100&platform=1&is_hot=0&is_recommend=0&about_to_begin=%d&task_type=%s&is_succession=%d", type, task_type, is_succession);
     }
     //获取正在运行的任务(试玩任务、游戏任务、连续任务)
-    public static String new_run_task(int is_succession){
-        return "app/accepted_task/new_run_task/?is_succession="+is_succession;
+    public static String new_run_task(int is_succession, int show_game_task){
+        return String.format(Locale.CHINA, "app/accepted_task/new_run_task/?is_succession=%d&show_game_task=%d", is_succession, show_game_task);
     }
     //发现模块标签列表
     public static final String articles_tags = "app/find/articles_tags/list";
@@ -78,5 +80,9 @@ public class ApiKey {
     public static String releaseTaskDesc(int releaseTaskId){
         return String.format(Locale.CHINA, "app/release_task/%d/desc", releaseTaskId);
     }
+    //获取任务详情
+    public static String oldEqualsNew(String key){
+        return key+"oldEqualsNew";
+    }
 
 }