Преглед на файлове

试玩任务列表与连续任务列表优化

zengjiebin преди 7 години
родител
ревизия
e33eeb1194

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/model/util/CacheInterceptor.java

@@ -27,6 +27,7 @@ import okio.BufferedSource;
  */
 public class CacheInterceptor implements Interceptor {
     private static final Charset UTF8 = Charset.forName("UTF-8");
+    public static final int DEFAULT_SAVE_TIME = 300;//单位秒
 
     public Response intercept(Chain chain) throws IOException {
         Request request = chain.request();
@@ -67,7 +68,7 @@ public class CacheInterceptor implements Interceptor {
                         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, 300);//默认缓存5分钟
+                            aCache.put(key, result, DEFAULT_SAVE_TIME);//默认缓存5分钟
                         } else {
                             aCache.remove(key);
                         }

+ 22 - 6
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -172,25 +172,41 @@ public class DataUtil {
         return null;
     }
 
+    /**
+     * 重新设置api为key的数据的时间为saveTime,若本身没有数据,则保存空数据
+     * @param key
+     * @param saveTime 单位秒
+     */
     public void resetCacheTime(String key, int saveTime) {
         ACache aCache = ACache.get(SheepApp.getInstance());
         String realKey = SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key;
         String cacheData = aCache.getAsString(realKey);
         if (!TextUtils.isEmpty(cacheData)) {
             aCache.put(realKey, cacheData, saveTime);
+        } else {
+            aCache.put(realKey, "", saveTime);
         }
     }
 
+    /**
+     * 获取缓存的数据列表,为空代表没有获取过,为空字符串代表之前获取数据为空列表
+     * @param key
+     * @param classT
+     * @param <T>
+     * @return
+     */
     public <T> List<T> getCacheList(String key, Class<T> classT) {
         ACache aCache = ACache.get(SheepApp.getInstance());
         String cacheData = aCache.getAsString(SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key);
-        if (cacheData != null) {
-            if (BuildConfig.XXTEA_ENCRYPT) {
-                cacheData = BaseMessageConverter.decrypt(cacheData);
-            }
-            return JSON.parseObject(cacheData, BaseMessage.class).getDataList(classT);
+        if (cacheData == null) {
+            return null;
+        } else if(cacheData.isEmpty()){
+            return ListUtil.emptyList();
         }
-        return null;
+        if (BuildConfig.XXTEA_ENCRYPT) {
+            cacheData = BaseMessageConverter.decrypt(cacheData);
+        }
+        return JSON.parseObject(cacheData, BaseMessage.class).getDataList(classT);
     }
 
     /**

+ 40 - 34
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -9,7 +9,6 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.alibaba.fastjson.JSONArray;
 import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.di.components.DaggerFgtTryMakeMoneyComponent;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
@@ -44,6 +43,8 @@ import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
 
+import static com.sheep.gamegroup.model.util.CacheInterceptor.DEFAULT_SAVE_TIME;
+
 /**
  * 试玩赚钱
  * Created by ljy on 2018/4/26.
@@ -121,14 +122,6 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         initView();
     }
 
-
-    //    @Override
-//    protected void initView(Bundle savedInstanceState) {
-//
-//        setContentView(R.layout.fgt_try_makemoney_layout);
-//        initView();
-//        initListener();
-//    }
     public void initView() {
         activity = (TryMakeMoneyact) getActivity();
         if(activity == null){
@@ -202,6 +195,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         if(isFirstCache){
             List<TaskAcceptedEty> cacheTaskAcceptedEtyList = DataUtil.getInstance().getTaskAcceptedTaskList(is_succession);
             if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
+                acceptedEtyList.clear();
             } else {
                 acceptedEtyList = cacheTaskAcceptedEtyList;
             }
@@ -274,11 +268,12 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         if(object instanceof BaseMessage) {
             List<TaskAcceptedEty> taskAcceptedEty = ((BaseMessage) object).getDataList(TaskAcceptedEty.class);
             if(!ListUtil.isEmpty(taskAcceptedEty)) {
+                acceptedEtyList.clear();
+            } else {
                 acceptedEtyList = taskAcceptedEty;
             }
         }
         getNetWork(type);
-//        notifyDataSetChanged();
     }
 
     @Override
@@ -298,7 +293,6 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
             G.showToast(" 网络错误!");
         }
         getNetWork(type);
-//        notifyDataSetChanged();
     }
 
     /**
@@ -318,21 +312,27 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     break;
             }
         }
-        type++;
-        getNetWork(type);
-        notifyDataSetChanged();
-
+        loadReleaseOrNotifyAdapter();
     }
 
     @Override
     public void failReleaseTask2View(Object o) {
-
-
-        if(type == 0){
-            type = 1;
-            getNetWork(type);
+        loadReleaseOrNotifyAdapter();
+    }
+    private void loadReleaseOrNotifyAdapter(){
+        switch (type){
+            case 0://获取已经发布任务
+                if(ListUtil.isEmpty(releaseEtyLists)){
+                    DataUtil.getInstance().resetCacheTime(ApiKey.release_task(type, is_succession), DEFAULT_SAVE_TIME);
+                }
+                break;
+            case 1://即将开始的任务列表
+                if(ListUtil.isEmpty(releaseEtyListsBegin)){
+                    DataUtil.getInstance().resetCacheTime(ApiKey.release_task(type, is_succession), DEFAULT_SAVE_TIME);
+                }
+                break;
         }
-        notifyDataSetChanged();
+        getNetWork(++type);
     }
 
     @Subscribe
@@ -385,21 +385,27 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         }
         if(isFirstCache){
             List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(type, is_succession), TaskReleaseEty.class);
-
-            if(cacheTaskReleaseEtyList == null) {
-                isFirstCache = false;//没有缓存
-                getNetWork(type);
-            } else{
-                switch (type){
-                    case 0:
+            switch (type){
+                case 0:
+                    if(cacheTaskReleaseEtyList == null) {
+                        releaseEtyLists.clear();
+                        isFirstCache = false;//没有缓存
+                        getNetWork(type);
+                    } else {
                         releaseEtyLists = cacheTaskReleaseEtyList;
-                        break;
-                    case 1:
+                        getNetWork(++type);
+                    }
+                    break;
+                case 1:
+                    if(cacheTaskReleaseEtyList == null) {
+                        releaseEtyListsBegin.clear();
+                        isFirstCache = false;//没有缓存
+                        getNetWork(type);
+                    } else {
                         releaseEtyListsBegin = cacheTaskReleaseEtyList;
-                        break;
-                }
-                type++;
-                getNetWork(type);
+                        getNetWork(++type);
+                    }
+                    break;
             }
         } else {
             RequestParameEty parameEty = new RequestParameEty();

+ 2 - 2
app/src/main/res/layout/empty_view.xml

@@ -14,7 +14,7 @@
         android:background="@color/white"
         android:gravity="center"
         android:scaleType="centerInside"
-        android:src="@mipmap/wushuju"
+        android:src="@drawable/loading_01"
         android:visibility="visible" />
 
     <TextView
@@ -25,5 +25,5 @@
         android:layout_below="@id/img_list_empty"
         android:layout_centerHorizontal="true"
         android:layout_marginTop="@dimen/content_padding_big"
-        android:text="@string/wushuju" />
+        android:text="@string/loading" />
 </RelativeLayout>