Commit db12e777fb1865bdb5acfa8389fdd9b53fe7407f
1 parent
ebaf1eba
网络缓存接口更新
Showing
13 changed files
with
478 additions
and
19 deletions
app/build.gradle
app/src/main/java/com/cnlive/libs/demo/data/model/AppVersionInfo.java
0 → 100644
| 1 | +package com.cnlive.libs.demo.data.model; | ||
| 2 | + | ||
| 3 | +public class AppVersionInfo { | ||
| 4 | + | ||
| 5 | + | ||
| 6 | + | ||
| 7 | + /** | ||
| 8 | + * deviceType : IOS | ||
| 9 | + * msg : 达人端1.0 | ||
| 10 | + * createTime : 2018-04-02 00:00:00 | ||
| 11 | + * id : aaaaa | ||
| 12 | + * type : B | ||
| 13 | + * version : 1.0 | ||
| 14 | + */ | ||
| 15 | + | ||
| 16 | + private String deviceType; | ||
| 17 | + private String msg; | ||
| 18 | + private String createTime; | ||
| 19 | + private String id; | ||
| 20 | + private String type; | ||
| 21 | + private String version; | ||
| 22 | + private String versionCode; | ||
| 23 | + | ||
| 24 | + public String getVersionCode() { | ||
| 25 | + return versionCode; | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + public void setVersionCode(String versionCode) { | ||
| 29 | + this.versionCode = versionCode; | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public String getDownLoadUrl() { | ||
| 33 | + return downLoadUrl; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + public void setDownLoadUrl(String downLoadUrl) { | ||
| 37 | + this.downLoadUrl = downLoadUrl; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + private String downLoadUrl; | ||
| 41 | + | ||
| 42 | + public String getDeviceType() { | ||
| 43 | + return deviceType; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public void setDeviceType(String deviceType) { | ||
| 47 | + this.deviceType = deviceType; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public String getMsg() { | ||
| 51 | + return msg; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public void setMsg(String msg) { | ||
| 55 | + this.msg = msg; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public String getCreateTime() { | ||
| 59 | + return createTime; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public void setCreateTime(String createTime) { | ||
| 63 | + this.createTime = createTime; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public String getId() { | ||
| 67 | + return id; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public void setId(String id) { | ||
| 71 | + this.id = id; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public String getType() { | ||
| 75 | + return type; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public void setType(String type) { | ||
| 79 | + this.type = type; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public String getVersion() { | ||
| 83 | + return version; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public void setVersion(String version) { | ||
| 87 | + this.version = version; | ||
| 88 | + } | ||
| 89 | +} | ||
| 0 | \ No newline at end of file | 90 | \ No newline at end of file |
app/src/main/java/com/cnlive/libs/demo/data/network/testapi/ApiRequest.java
| 1 | package com.cnlive.libs.demo.data.network.testapi; | 1 | package com.cnlive.libs.demo.data.network.testapi; |
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | +import android.content.Context; | ||
| 5 | + | ||
| 4 | import com.cnlive.libs.base.data.model.IBaseInfo; | 6 | import com.cnlive.libs.base.data.model.IBaseInfo; |
| 5 | import com.cnlive.libs.base.data.network.RetrofitUtil; | 7 | import com.cnlive.libs.base.data.network.RetrofitUtil; |
| 6 | import com.cnlive.libs.base.data.network.Subscriber; | 8 | import com.cnlive.libs.base.data.network.Subscriber; |
| @@ -33,6 +35,10 @@ public class ApiRequest { | @@ -33,6 +35,10 @@ public class ApiRequest { | ||
| 33 | return RetrofitUtil.getRestAPI(getUrl(clazz), clazz); | 35 | return RetrofitUtil.getRestAPI(getUrl(clazz), clazz); |
| 34 | } | 36 | } |
| 35 | 37 | ||
| 38 | + public static <T> T service(Class<T> clazz, Context context) { | ||
| 39 | + return RetrofitUtil.getRestAPI(context, true, true, 10_000, 10_000, getUrl(clazz), clazz); | ||
| 40 | + } | ||
| 41 | + | ||
| 36 | public static <T extends IBaseInfo> Disposable subscribe(Observable<Result<T>> observable, Subscriber<T> subscriber) { | 42 | public static <T extends IBaseInfo> Disposable subscribe(Observable<Result<T>> observable, Subscriber<T> subscriber) { |
| 37 | return observable.take(1) | 43 | return observable.take(1) |
| 38 | .subscribeOn(Schedulers.io()) | 44 | .subscribeOn(Schedulers.io()) |
app/src/main/java/com/cnlive/libs/demo/data/network/testapi/ApiService.java
| @@ -4,14 +4,27 @@ package com.cnlive.libs.demo.data.network.testapi; | @@ -4,14 +4,27 @@ package com.cnlive.libs.demo.data.network.testapi; | ||
| 4 | import com.cnlive.libs.demo.data.model.AppInfo; | 4 | import com.cnlive.libs.demo.data.model.AppInfo; |
| 5 | import com.cnlive.libs.demo.mvptest.model.ExpertLibraryListBean; | 5 | import com.cnlive.libs.demo.mvptest.model.ExpertLibraryListBean; |
| 6 | 6 | ||
| 7 | +import java.util.Map; | ||
| 8 | + | ||
| 7 | import io.reactivex.Observable; | 9 | import io.reactivex.Observable; |
| 8 | import retrofit2.adapter.rxjava2.Result; | 10 | import retrofit2.adapter.rxjava2.Result; |
| 9 | import retrofit2.http.GET; | 11 | import retrofit2.http.GET; |
| 12 | +import retrofit2.http.Headers; | ||
| 10 | import retrofit2.http.Query; | 13 | import retrofit2.http.Query; |
| 14 | +import retrofit2.http.QueryMap; | ||
| 11 | 15 | ||
| 12 | public interface ApiService { | 16 | public interface ApiService { |
| 13 | - String URL_DEBUG = "https://ymzx.asia-cloud.com/api/"; | ||
| 14 | - String URL_RELEASE = "https://ymzx.asia-cloud.com/api/"; | 17 | + String URL_DEBUG = "https://apiwjj.cnlive.com/Daren/moment/"; |
| 18 | + String URL_RELEASE = "https://apiwjj.cnlive.com/Daren/moment/"; | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 版本更新 | ||
| 23 | + * | ||
| 24 | + * @return | ||
| 25 | + */ | ||
| 26 | + @GET("friendMoment.action") | ||
| 27 | + Observable<Result<BaseInfo<MomentData>>> getVersion(@QueryMap() Map<String, String> map); | ||
| 15 | 28 | ||
| 16 | /** | 29 | /** |
| 17 | * 获取应用程序信息 | 30 | * 获取应用程序信息 |
| @@ -19,6 +32,7 @@ public interface ApiService { | @@ -19,6 +32,7 @@ public interface ApiService { | ||
| 19 | * @param app_id 应用程序ID | 32 | * @param app_id 应用程序ID |
| 20 | * @return AppInfo | 33 | * @return AppInfo |
| 21 | */ | 34 | */ |
| 35 | + @Headers("cache:60") | ||
| 22 | @GET("apps/info") | 36 | @GET("apps/info") |
| 23 | Observable<Result<AppInfo>> appInfo(@Query("app_id") int app_id); | 37 | Observable<Result<AppInfo>> appInfo(@Query("app_id") int app_id); |
| 24 | 38 |
app/src/main/java/com/cnlive/libs/demo/data/network/testapi/BaseInfo.java
0 → 100644
| 1 | +package com.cnlive.libs.demo.data.network.testapi; | ||
| 2 | + | ||
| 3 | +import com.cnlive.libs.base.data.model.IBaseInfo; | ||
| 4 | + | ||
| 5 | +public class BaseInfo<T> implements IBaseInfo { | ||
| 6 | + //TODO 接口错误信息 需要自定义 | ||
| 7 | + private String errorCode = "0"; | ||
| 8 | + private String errorMessage = ""; | ||
| 9 | + | ||
| 10 | + //TODO 接口内容数据 需要自定义 | ||
| 11 | + private T data; | ||
| 12 | + | ||
| 13 | + public void setCode(String status_code) { | ||
| 14 | + this.errorCode = status_code; | ||
| 15 | + } | ||
| 16 | + | ||
| 17 | + public String getCode() { | ||
| 18 | + return errorCode; | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + public void setMessage(String errorMessage) { | ||
| 22 | + this.errorMessage = errorMessage; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + public String getMessage() { | ||
| 26 | + return errorMessage; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + public void setData(T data) { | ||
| 30 | + this.data = data; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public T getData() { | ||
| 34 | + return data; | ||
| 35 | + } | ||
| 36 | +} |
app/src/main/java/com/cnlive/libs/demo/data/network/testapi/MomentData.java
0 → 100644
| 1 | +package com.cnlive.libs.demo.data.network.testapi; | ||
| 2 | + | ||
| 3 | +import java.io.Serializable; | ||
| 4 | +import java.util.List; | ||
| 5 | + | ||
| 6 | +public class MomentData implements Serializable { | ||
| 7 | + | ||
| 8 | + private boolean lastPage = true; | ||
| 9 | + //新消息提醒 | ||
| 10 | + private MomentIcon icon; | ||
| 11 | + //朋友圈列表 | ||
| 12 | + private List<FriendItem> moments; | ||
| 13 | + //个人相册列表 | ||
| 14 | + private List<PhotoItem> items; | ||
| 15 | + | ||
| 16 | + public static class MomentIcon implements Serializable{ | ||
| 17 | + private String nickName; | ||
| 18 | + private String userId; | ||
| 19 | + private String image; | ||
| 20 | + | ||
| 21 | + public String getNickName() { | ||
| 22 | + return nickName; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + public void setNickName(String nickName) { | ||
| 26 | + this.nickName = nickName; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + public String getUserId() { | ||
| 30 | + return userId; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public void setUserId(String userId) { | ||
| 34 | + this.userId = userId; | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + public String getImage() { | ||
| 38 | + return image; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + public void setImage(String image) { | ||
| 42 | + this.image = image; | ||
| 43 | + } | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public static class MomentVideo implements Serializable{ | ||
| 47 | + private String time; | ||
| 48 | + private String imageUrl; | ||
| 49 | + private String videoId; | ||
| 50 | + | ||
| 51 | + public String getTime() { | ||
| 52 | + return time; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + public void setTime(String time) { | ||
| 56 | + this.time = time; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + public String getImageUrl() { | ||
| 60 | + return imageUrl; | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + public void setImageUrl(String imageUrl) { | ||
| 64 | + this.imageUrl = imageUrl; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public String getVideoId() { | ||
| 68 | + return videoId; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public void setVideoId(String videoId) { | ||
| 72 | + this.videoId = videoId; | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + public static class PhotoItem implements Serializable{ | ||
| 77 | + private String sid; | ||
| 78 | + private String text; | ||
| 79 | + private long ts; | ||
| 80 | + private String address; | ||
| 81 | + private List<String> images; | ||
| 82 | + private String itemId; | ||
| 83 | + private int type; | ||
| 84 | + private MomentVideo video; | ||
| 85 | + | ||
| 86 | + public String getSid() { | ||
| 87 | + return sid; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public void setSid(String sid) { | ||
| 91 | + this.sid = sid; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public String getText() { | ||
| 95 | + return text; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + public void setText(String text) { | ||
| 99 | + this.text = text; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + public long getTs() { | ||
| 103 | + return ts; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + public void setTs(long ts) { | ||
| 107 | + this.ts = ts; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + public String getAddress() { | ||
| 111 | + return address; | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + public void setAddress(String address) { | ||
| 115 | + this.address = address; | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + public List<String> getImages() { | ||
| 119 | + return images; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + public void setImages(List<String> images) { | ||
| 123 | + this.images = images; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + public String getItemId() { | ||
| 127 | + return itemId; | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | + public void setItemId(String itemId) { | ||
| 131 | + this.itemId = itemId; | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + public int getType() { | ||
| 135 | + return type; | ||
| 136 | + } | ||
| 137 | + | ||
| 138 | + public void setType(int type) { | ||
| 139 | + this.type = type; | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + public MomentVideo getVideo() { | ||
| 143 | + return video; | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + public void setVideo(MomentVideo video) { | ||
| 147 | + this.video = video; | ||
| 148 | + } | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + public static class FriendItem implements Serializable{ | ||
| 152 | + private PhotoItem item; | ||
| 153 | + private MomentIcon icon; | ||
| 154 | + | ||
| 155 | + public PhotoItem getItem() { | ||
| 156 | + return item; | ||
| 157 | + } | ||
| 158 | + | ||
| 159 | + public void setItem(PhotoItem item) { | ||
| 160 | + this.item = item; | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + public MomentIcon getIcon() { | ||
| 164 | + return icon; | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + public void setIcon(MomentIcon icon) { | ||
| 168 | + this.icon = icon; | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + public MomentIcon getIcon() { | ||
| 173 | + return icon; | ||
| 174 | + } | ||
| 175 | + | ||
| 176 | + public void setIcon(MomentIcon icon) { | ||
| 177 | + this.icon = icon; | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + public List<PhotoItem> getItems() { | ||
| 181 | + return items; | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + public void setItems(List<PhotoItem> items) { | ||
| 185 | + this.items = items; | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + public List<FriendItem> getMoments() { | ||
| 189 | + return moments; | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + public void setMoments(List<FriendItem> moments) { | ||
| 193 | + this.moments = moments; | ||
| 194 | + } | ||
| 195 | + | ||
| 196 | + public boolean isLastPage() { | ||
| 197 | + return lastPage; | ||
| 198 | + } | ||
| 199 | + | ||
| 200 | + public void setLastPage(boolean lastPage) { | ||
| 201 | + this.lastPage = lastPage; | ||
| 202 | + } | ||
| 203 | +} | ||
| 0 | \ No newline at end of file | 204 | \ No newline at end of file |
app/src/main/java/com/cnlive/libs/demo/mvptest/ui/activity/LaunchActivity.java
| @@ -6,14 +6,25 @@ import android.os.Bundle; | @@ -6,14 +6,25 @@ import android.os.Bundle; | ||
| 6 | import android.util.Log; | 6 | import android.util.Log; |
| 7 | import android.view.View; | 7 | import android.view.View; |
| 8 | 8 | ||
| 9 | +import com.cnlive.libs.base.data.network.Subscriber; | ||
| 9 | import com.cnlive.libs.base.frame.activity.MvpViewStateBindingActivity; | 10 | import com.cnlive.libs.base.frame.activity.MvpViewStateBindingActivity; |
| 10 | import com.cnlive.libs.demo.R; | 11 | import com.cnlive.libs.demo.R; |
| 11 | import com.cnlive.libs.demo.ToastTest; | 12 | import com.cnlive.libs.demo.ToastTest; |
| 13 | +import com.cnlive.libs.demo.data.network.testapi.ApiRequest; | ||
| 14 | +import com.cnlive.libs.demo.data.network.testapi.ApiService; | ||
| 15 | +import com.cnlive.libs.demo.data.network.testapi.BaseInfo; | ||
| 16 | +import com.cnlive.libs.demo.data.network.testapi.MomentData; | ||
| 12 | import com.cnlive.libs.demo.databinding.ActivityLaunchBinding; | 17 | import com.cnlive.libs.demo.databinding.ActivityLaunchBinding; |
| 13 | import com.cnlive.libs.demo.mvptest.frame.presenter.LaunchPresenter; | 18 | import com.cnlive.libs.demo.mvptest.frame.presenter.LaunchPresenter; |
| 14 | import com.cnlive.libs.demo.mvptest.frame.view.LaunchView; | 19 | import com.cnlive.libs.demo.mvptest.frame.view.LaunchView; |
| 15 | import com.cnlive.libs.demo.mvptest.model.LaunchListItemData; | 20 | import com.cnlive.libs.demo.mvptest.model.LaunchListItemData; |
| 16 | import com.cnlive.libs.demo.mvptest.model.LaunchPage; | 21 | import com.cnlive.libs.demo.mvptest.model.LaunchPage; |
| 22 | +import com.google.gson.Gson; | ||
| 23 | + | ||
| 24 | +import java.util.HashMap; | ||
| 25 | +import java.util.Map; | ||
| 26 | + | ||
| 27 | +import static com.cnlive.libs.demo.RequestTest.subscriberBuild; | ||
| 17 | 28 | ||
| 18 | public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, LaunchPresenter, LaunchPage, ActivityLaunchBinding> { | 29 | public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, LaunchPresenter, LaunchPage, ActivityLaunchBinding> { |
| 19 | 30 | ||
| @@ -30,7 +41,7 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | @@ -30,7 +41,7 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | ||
| 30 | @Override | 41 | @Override |
| 31 | protected void onPostCreate(Bundle savedInstanceState) { | 42 | protected void onPostCreate(Bundle savedInstanceState) { |
| 32 | super.onPostCreate(savedInstanceState); | 43 | super.onPostCreate(savedInstanceState); |
| 33 | - getViewData().getAdapter().setItemClickListener((id,item) -> { | 44 | + getViewData().getAdapter().setItemClickListener((id, item) -> { |
| 34 | Log.e("DemoView", "Click " + item.getName()); | 45 | Log.e("DemoView", "Click " + item.getName()); |
| 35 | }); | 46 | }); |
| 36 | } | 47 | } |
| @@ -49,8 +60,8 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | @@ -49,8 +60,8 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | ||
| 49 | public void onClick(View view) { | 60 | public void onClick(View view) { |
| 50 | switch (view.getId()) { | 61 | switch (view.getId()) { |
| 51 | case R.id.click: | 62 | case R.id.click: |
| 52 | - getViewData().setTime(2); | ||
| 53 | - startActivity(new Intent(this, LaunchActivity.class)); | 63 | +// getViewData().setTime(2); |
| 64 | +// startActivity(new Intent(this, LaunchActivity.class)); | ||
| 54 | break; | 65 | break; |
| 55 | } | 66 | } |
| 56 | } | 67 | } |
| @@ -63,8 +74,23 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | @@ -63,8 +74,23 @@ public class LaunchActivity extends MvpViewStateBindingActivity<LaunchView, Laun | ||
| 63 | private int index = 1; | 74 | private int index = 1; |
| 64 | 75 | ||
| 65 | public void onAddItemClick(View view) { | 76 | public void onAddItemClick(View view) { |
| 66 | - getViewData().getAdapter().addItem(new LaunchListItemData("" + index++)); | ||
| 67 | - getViewData().setTime(getViewData().getAdapter().getItemCount()); | 77 | + Map<String, String> requestMap = new HashMap<>(); |
| 78 | + requestMap.put("sid", "815510"); | ||
| 79 | + ApiRequest.subscribe( | ||
| 80 | + ApiRequest.service(ApiService.class, this).getVersion(requestMap), | ||
| 81 | + new Subscriber<BaseInfo<MomentData>>(this, subscriberBuild) { | ||
| 82 | + @Override | ||
| 83 | + public void onCompleted(String code, String message, BaseInfo<MomentData> data) { | ||
| 84 | + Log.e("DemoView", "结果 " + new Gson().toJson(data)); | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + @Override | ||
| 88 | + public void onError(String code, String message) { | ||
| 89 | + Log.e("DemoView", "错误 " + code + ":" + message); | ||
| 90 | + } | ||
| 91 | + }); | ||
| 92 | +// getViewData().getAdapter().addItem(new LaunchListItemData("" + index++)); | ||
| 93 | +// getViewData().setTime(getViewData().getAdapter().getItemCount()); | ||
| 68 | } | 94 | } |
| 69 | 95 | ||
| 70 | public void onMainItemClick(View view) { | 96 | public void onMainItemClick(View view) { |
cnlive/build.gradle
| @@ -78,7 +78,7 @@ ext { | @@ -78,7 +78,7 @@ ext { | ||
| 78 | siteUrl = 'http://bj.gitlab.cnlive.com/cnlive-team/CNVideoDemo' | 78 | siteUrl = 'http://bj.gitlab.cnlive.com/cnlive-team/CNVideoDemo' |
| 79 | gitUrl = 'http://bj.gitlab.cnlive.com/cnlive-team/CNVideoDemo.git' | 79 | gitUrl = 'http://bj.gitlab.cnlive.com/cnlive-team/CNVideoDemo.git' |
| 80 | 80 | ||
| 81 | - libraryVersion = '0.3.0' | 81 | + libraryVersion = '0.3.3' |
| 82 | 82 | ||
| 83 | developerId = 'CNlive' | 83 | developerId = 'CNlive' |
| 84 | developerName = 'Granzon' | 84 | developerName = 'Granzon' |
cnlive/src/main/java/com/cnlive/libs/base/data/network/OffLineInterceptor.java
0 → 100644
| 1 | +package com.cnlive.libs.base.data.network; | ||
| 2 | + | ||
| 3 | +import android.content.Context; | ||
| 4 | + | ||
| 5 | +import java.io.IOException; | ||
| 6 | + | ||
| 7 | +import okhttp3.Interceptor; | ||
| 8 | +import okhttp3.Request; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * Created by xiansong on 2018/4/4. | ||
| 12 | + */ | ||
| 13 | + | ||
| 14 | +public class OffLineInterceptor implements Interceptor { | ||
| 15 | + | ||
| 16 | + private static final int TIMEOUT_DISCONNECT = 60 * 60 * 24 * 7; //7天 | ||
| 17 | + | ||
| 18 | + private Context mContext; | ||
| 19 | + | ||
| 20 | + protected OffLineInterceptor(Context context) { | ||
| 21 | + mContext = context; | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + @Override | ||
| 25 | + public okhttp3.Response intercept(Chain chain) throws IOException { | ||
| 26 | + Request request = chain.request(); | ||
| 27 | + //离线的时候为7天的缓存。 | ||
| 28 | + if (!NetworkUtil.isConnectInternet(mContext)) { | ||
| 29 | + request = request.newBuilder() | ||
| 30 | + .header("Cache-Control", "public, only-if-cached, max-stale=" + TIMEOUT_DISCONNECT) | ||
| 31 | + .build(); | ||
| 32 | + } | ||
| 33 | + return chain.proceed(request); | ||
| 34 | + } | ||
| 35 | +} |
cnlive/src/main/java/com/cnlive/libs/base/data/network/OnLineInterceptor.java
0 → 100644
| 1 | +package com.cnlive.libs.base.data.network; | ||
| 2 | + | ||
| 3 | +import java.io.IOException; | ||
| 4 | + | ||
| 5 | +import okhttp3.Interceptor; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Created by xiansong on 2018/4/4. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | +public class OnLineInterceptor implements Interceptor { | ||
| 12 | + | ||
| 13 | + private static final int TIMEOUT_CONNECT = 5; //5秒 | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + public okhttp3.Response intercept(Chain chain) throws IOException { | ||
| 17 | + //获取retrofit @headers里面的参数,参数可以自己定义,在本例我自己定义的是cache,跟@headers里面对应就可以了 | ||
| 18 | + String cache = chain.request().header("cache"); | ||
| 19 | + okhttp3.Response originalResponse = chain.proceed(chain.request()); | ||
| 20 | + String cacheControl = originalResponse.header("Cache-Control"); | ||
| 21 | + //如果cacheControl为空,就让他TIMEOUT_CONNECT秒的缓存,本例是5秒,方便观察。注意这里的cacheControl是服务器返回的 | ||
| 22 | + if (cacheControl == null) { | ||
| 23 | + //如果cache没值,缓存时间为TIMEOUT_CONNECT,有的话就为cache的值 | ||
| 24 | + if (cache == null || "".equals(cache)) { | ||
| 25 | + cache = TIMEOUT_CONNECT + ""; | ||
| 26 | + } | ||
| 27 | + originalResponse = originalResponse.newBuilder() | ||
| 28 | + .header("Cache-Control", "public, max-age=" + cache) | ||
| 29 | + .build(); | ||
| 30 | + return originalResponse; | ||
| 31 | + } else { | ||
| 32 | + return originalResponse; | ||
| 33 | + } | ||
| 34 | + } | ||
| 35 | +} | ||
| 0 | \ No newline at end of file | 36 | \ No newline at end of file |
cnlive/src/main/java/com/cnlive/libs/base/data/network/RetrofitUtil.java
| @@ -24,6 +24,9 @@ import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; | @@ -24,6 +24,9 @@ import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; | ||
| 24 | import retrofit2.converter.gson.GsonConverterFactory; | 24 | import retrofit2.converter.gson.GsonConverterFactory; |
| 25 | 25 | ||
| 26 | public class RetrofitUtil { | 26 | public class RetrofitUtil { |
| 27 | + | ||
| 28 | + private static Context context; | ||
| 29 | + | ||
| 27 | private static boolean DEBUG = AppConfig.isDebug(); | 30 | private static boolean DEBUG = AppConfig.isDebug(); |
| 28 | 31 | ||
| 29 | private static final String TAG = "RetrofitUtil"; | 32 | private static final String TAG = "RetrofitUtil"; |
| @@ -42,8 +45,8 @@ public class RetrofitUtil { | @@ -42,8 +45,8 @@ public class RetrofitUtil { | ||
| 42 | return getRestAPI(null, false, showLog, 5000, 5000, endpoint, service); | 45 | return getRestAPI(null, false, showLog, 5000, 5000, endpoint, service); |
| 43 | } | 46 | } |
| 44 | 47 | ||
| 45 | - private static <T> T getRestAPI(Context context, boolean hasCache, boolean showLog, int readTimeout, int connectTimeout, String endpoint, Class<T> service) { | ||
| 46 | - | 48 | + public static <T> T getRestAPI(Context context, boolean hasCache, boolean showLog, int readTimeout, int connectTimeout, String endpoint, Class<T> service) { |
| 49 | + RetrofitUtil.context = context; | ||
| 47 | OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient().newBuilder(); | 50 | OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient().newBuilder(); |
| 48 | 51 | ||
| 49 | try { | 52 | try { |
| @@ -71,8 +74,10 @@ public class RetrofitUtil { | @@ -71,8 +74,10 @@ public class RetrofitUtil { | ||
| 71 | okHttpClientBuilder.readTimeout(readTimeout, TimeUnit.SECONDS); | 74 | okHttpClientBuilder.readTimeout(readTimeout, TimeUnit.SECONDS); |
| 72 | } | 75 | } |
| 73 | if (hasCache) { | 76 | if (hasCache) { |
| 77 | + okHttpClientBuilder.addNetworkInterceptor(new OnLineInterceptor()); | ||
| 78 | + okHttpClientBuilder.addInterceptor(new OffLineInterceptor(context)); | ||
| 79 | + | ||
| 74 | okHttpClientBuilder.cache(new Cache(context.getCacheDir(), 10 * 1024 * 1024)); | 80 | okHttpClientBuilder.cache(new Cache(context.getCacheDir(), 10 * 1024 * 1024)); |
| 75 | - okHttpClientBuilder.addNetworkInterceptor(new ClientInterceptor(context)); | ||
| 76 | } | 81 | } |
| 77 | 82 | ||
| 78 | if (showLog) { | 83 | if (showLog) { |
| @@ -91,5 +96,4 @@ public class RetrofitUtil { | @@ -91,5 +96,4 @@ public class RetrofitUtil { | ||
| 91 | return retrofit.create(service); | 96 | return retrofit.create(service); |
| 92 | } | 97 | } |
| 93 | 98 | ||
| 94 | - | ||
| 95 | } | 99 | } |
cnlive/src/main/java/com/cnlive/libs/base/frame/ReflectUtil.java
| @@ -32,11 +32,6 @@ public class ReflectUtil { | @@ -32,11 +32,6 @@ public class ReflectUtil { | ||
| 32 | public static Object invoke(Object obj, String methodName, Object data) { | 32 | public static Object invoke(Object obj, String methodName, Object data) { |
| 33 | Object result = null; | 33 | Object result = null; |
| 34 | try { | 34 | try { |
| 35 | - Log.e("DemOView", "--------------------Test " + methodName + " : " + data.getClass()); | ||
| 36 | - for (Method method : obj.getClass().getMethods()) { | ||
| 37 | - Log.e("DemOView", "Test " + method.getName() + " : " + method.getParameterAnnotations().toString()); | ||
| 38 | - } | ||
| 39 | - | ||
| 40 | Method method = obj.getClass().getMethod(methodName, new Class[]{data.getClass()}); | 35 | Method method = obj.getClass().getMethod(methodName, new Class[]{data.getClass()}); |
| 41 | result = method.invoke(obj, data); | 36 | result = method.invoke(obj, data); |
| 42 | } catch (Exception e) { | 37 | } catch (Exception e) { |
| @@ -45,6 +40,17 @@ public class ReflectUtil { | @@ -45,6 +40,17 @@ public class ReflectUtil { | ||
| 45 | return result; | 40 | return result; |
| 46 | } | 41 | } |
| 47 | 42 | ||
| 43 | + public static Object invoke(Object obj, String methodName) { | ||
| 44 | + Object result = null; | ||
| 45 | + try { | ||
| 46 | + Method method = obj.getClass().getMethod(methodName); | ||
| 47 | + result = method.invoke(obj); | ||
| 48 | + } catch (Exception e) { | ||
| 49 | + LogUtil.e(TAG, "The page data type is not match ", e); | ||
| 50 | + } | ||
| 51 | + return result; | ||
| 52 | + } | ||
| 53 | + | ||
| 48 | public static <R> R instance(int position, Class type, Object data) { | 54 | public static <R> R instance(int position, Class type, Object data) { |
| 49 | R result = null; | 55 | R result = null; |
| 50 | try { | 56 | try { |
cnlive/src/main/java/com/cnlive/libs/base/frame/adapter/DataBindingRecyclerAdapter.java
| @@ -62,12 +62,14 @@ public abstract class DataBindingRecyclerAdapter<D, T extends ViewDataBinding> e | @@ -62,12 +62,14 @@ public abstract class DataBindingRecyclerAdapter<D, T extends ViewDataBinding> e | ||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | @Override | 64 | @Override |
| 65 | - public void onBindViewHolder(DataBindingViewHolder holder, int position) { | 65 | + public void onBindViewHolder(final DataBindingViewHolder holder, int position) { |
| 66 | ReflectUtil.invoke(holder.binding, "setData", getList().get(position)); | 66 | ReflectUtil.invoke(holder.binding, "setData", getList().get(position)); |
| 67 | ReflectUtil.invoke(holder.binding, "setClick", new Click(position) { | 67 | ReflectUtil.invoke(holder.binding, "setClick", new Click(position) { |
| 68 | @Override | 68 | @Override |
| 69 | public void onClick(View v) { | 69 | public void onClick(View v) { |
| 70 | - if (listener != null) listener.onItemClick(v.getId(), getList().get(position)); | 70 | +// if (listener != null) listener.onItemClick(v.getId(), getList().get(position)); |
| 71 | + if (listener != null) | ||
| 72 | + listener.onItemClick(v.getId(), (D) ReflectUtil.invoke(holder.binding, "getData")); | ||
| 71 | } | 73 | } |
| 72 | }, View.OnClickListener.class); | 74 | }, View.OnClickListener.class); |
| 73 | holder.binding.executePendingBindings(); | 75 | holder.binding.executePendingBindings(); |