version:
fix: update:闹钟界面缓存
This commit is contained in:
@@ -42,6 +42,8 @@ import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class NoticeActivity extends AppCompatActivity {
|
||||
private String TAG = NoticeActivity.class.getSimpleName();
|
||||
|
||||
@BindView(R.id.tv_title)
|
||||
TextView tv_title;
|
||||
@BindView(R.id.bt_ok)
|
||||
@@ -56,11 +58,9 @@ public class NoticeActivity extends AppCompatActivity {
|
||||
ImageView imageView;
|
||||
|
||||
private AlarmClockData alarmClockData;
|
||||
int code;
|
||||
private int code;
|
||||
private MediaPlayer mediaPlayer;
|
||||
|
||||
private String TAG = NoticeActivity.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.uiui.aios.bean.AlarmClockData;
|
||||
import com.uiui.aios.bean.BaseResponse;
|
||||
import com.uiui.aios.network.NetInterfaceManager;
|
||||
import com.uiui.aios.alarm.AlarmUtils;
|
||||
import com.uiui.aios.utils.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,11 +22,12 @@ import cn.jzvd.Jzvd;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class AlarmClockActivity extends BaseActivity {
|
||||
public class AlarmClockActivity extends BaseActivity implements AlarmClockContact.ClockView {
|
||||
|
||||
@BindView(R.id.recyclerView)
|
||||
RecyclerView recyclerView;
|
||||
|
||||
private AlarmClockPresenter mPresenter;
|
||||
private AlarmAdapter mAlarmAdapter;
|
||||
|
||||
@Override
|
||||
@@ -36,6 +38,10 @@ public class AlarmClockActivity extends BaseActivity {
|
||||
@Override
|
||||
public void initView() {
|
||||
ButterKnife.bind(this);
|
||||
mPresenter = new AlarmClockPresenter(this);
|
||||
mPresenter.attachView(this);
|
||||
mPresenter.setLifecycle(lifecycleSubject);
|
||||
|
||||
mAlarmAdapter = new AlarmAdapter();
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(AlarmClockActivity.this));
|
||||
recyclerView.setAdapter(mAlarmAdapter);
|
||||
@@ -44,36 +50,23 @@ public class AlarmClockActivity extends BaseActivity {
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
NetInterfaceManager.getInstance().getAlarmClockApiObservable()
|
||||
.subscribe(new Observer<BaseResponse<List<AlarmClockData>>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
Log.e("getAlarmClock", "onSubscribe: ");
|
||||
}
|
||||
mPresenter.getAlarmClock();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(BaseResponse<List<AlarmClockData>> listBaseResponse) {
|
||||
Log.e("getAlarmClock", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
List<AlarmClockData> data = listBaseResponse.data;
|
||||
AlarmUtils.getInstance().setAlarmClockData(data);
|
||||
mAlarmAdapter.setAlarmClockData(data);
|
||||
} else {
|
||||
mAlarmAdapter.setAlarmClockData(null);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void showAlarmClock(List<AlarmClockData> alarmClockData) {
|
||||
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
|
||||
mAlarmAdapter.setAlarmClockData(alarmClockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
Log.e("getAlarmClock", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
@Override
|
||||
public void setAlarmClockEmpty() {
|
||||
mAlarmAdapter.setAlarmClockData(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getAlarmClock", "onComplete: ");
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onError() {
|
||||
ToastUtil.show("服务器连接失败,检查网络连接");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.uiui.aios.activity.alarm;
|
||||
|
||||
import com.uiui.aios.base.BasePresenter;
|
||||
import com.uiui.aios.base.BaseView;
|
||||
import com.uiui.aios.bean.AlarmClockData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class AlarmClockContact {
|
||||
public interface Presenter extends BasePresenter<ClockView> {
|
||||
void getAlarmClock();
|
||||
}
|
||||
|
||||
public interface ClockView extends BaseView {
|
||||
void showAlarmClock(List<AlarmClockData> alarmClockData);
|
||||
void setAlarmClockEmpty();
|
||||
void onError();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.uiui.aios.activity.alarm;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.uiui.aios.bean.AlarmClockData;
|
||||
import com.uiui.aios.network.NetInterfaceManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
|
||||
public class AlarmClockPresenter implements AlarmClockContact.Presenter {
|
||||
|
||||
private AlarmClockContact.ClockView mView;
|
||||
private Context mContext;
|
||||
|
||||
AlarmClockPresenter(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
private BehaviorSubject<ActivityEvent> lifecycle;
|
||||
|
||||
void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
|
||||
this.lifecycle = lifecycle;
|
||||
}
|
||||
|
||||
public BehaviorSubject<ActivityEvent> getLifecycle() {
|
||||
return lifecycle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attachView(@NonNull AlarmClockContact.ClockView view) {
|
||||
this.mView = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detachView() {
|
||||
this.mView = null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void getAlarmClock() {
|
||||
NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
|
||||
@Override
|
||||
public void setAlarmClock(List<AlarmClockData> alarmClockList) {
|
||||
mView.showAlarmClock(alarmClockList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAlarmClockEmpty() {
|
||||
mView.setAlarmClockEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
mView.onError();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -93,29 +93,24 @@ public class HealthCodeActivity extends BaseActivity implements HealthCodeContac
|
||||
|
||||
@Override
|
||||
public void setHealthCode(List<HealthCode> codeList) {
|
||||
NetInterfaceManager.getInstance().getHealthCode(true, lifecycleSubject, new NetInterfaceManager.HealthCodeCallback() {
|
||||
@Override
|
||||
public void setHealthCode(List<HealthCode> healthCode) {
|
||||
setImageViews(healthCode);
|
||||
mViewPager.setVisibility(View.VISIBLE);
|
||||
mMagicIndicator.setVisibility(View.VISIBLE);
|
||||
iv_nodata.setVisibility(View.GONE);
|
||||
}
|
||||
setImageViews(codeList);
|
||||
mViewPager.setVisibility(View.VISIBLE);
|
||||
mMagicIndicator.setVisibility(View.VISIBLE);
|
||||
iv_nodata.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noData() {
|
||||
mViewPager.setVisibility(View.GONE);
|
||||
mMagicIndicator.setVisibility(View.GONE);
|
||||
iv_nodata.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@Override
|
||||
public void setHealthCodeNodata() {
|
||||
mViewPager.setVisibility(View.GONE);
|
||||
mMagicIndicator.setVisibility(View.GONE);
|
||||
iv_nodata.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
ToastUtil.show("网络连接失败");
|
||||
mViewPager.setVisibility(View.GONE);
|
||||
mMagicIndicator.setVisibility(View.GONE);
|
||||
iv_nodata.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onError() {
|
||||
ToastUtil.show("连接服务器失败,请检查网络连接");
|
||||
// mViewPager.setVisibility(View.GONE);
|
||||
// mMagicIndicator.setVisibility(View.GONE);
|
||||
// iv_nodata.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,5 +13,7 @@ public class HealthCodeContact {
|
||||
|
||||
public interface CodeView extends BaseView {
|
||||
void setHealthCode(List<HealthCode> codeList);
|
||||
void setHealthCodeNodata();
|
||||
void onError();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,16 @@ package com.uiui.aios.activity.code;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.uiui.aios.bean.HealthCode;
|
||||
import com.uiui.aios.network.NetInterfaceManager;
|
||||
import com.uiui.aios.utils.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
|
||||
@@ -44,6 +50,21 @@ public class HealthCodePresenter implements HealthCodeContact.Presenter {
|
||||
|
||||
@Override
|
||||
public void getHealthCode() {
|
||||
NetInterfaceManager.getInstance().getHealthCode(true, getLifecycle(), new NetInterfaceManager.HealthCodeCallback() {
|
||||
@Override
|
||||
public void setHealthCode(List<HealthCode> healthCode) {
|
||||
mView.setHealthCode(healthCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noData() {
|
||||
mView.setHealthCodeNodata();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
mView.onError();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.tencent.android.tpush.XGPushConfig;
|
||||
import com.tencent.android.tpush.XGPushManager;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.aios.BuildConfig;
|
||||
import com.uiui.aios.manager.ConnectManager;
|
||||
import com.uiui.aios.network.NetInterfaceManager;
|
||||
import com.uiui.aios.service.main.MainService;
|
||||
import com.uiui.aios.alarm.AlarmUtils;
|
||||
@@ -65,6 +66,7 @@ public class BaseApplication extends Application {
|
||||
//切换至开发版服务
|
||||
HeConfig.switchToDevService();
|
||||
AmapManager.init(this);
|
||||
ConnectManager.init(this);
|
||||
NetInterfaceManager.init(this);
|
||||
startService(new Intent(this, MainService.class));
|
||||
}
|
||||
|
||||
@@ -90,8 +90,13 @@ public class ConnectManager {
|
||||
long nowTime = System.currentTimeMillis();
|
||||
long lastTime = mMMKV.decodeLong(key, 0);
|
||||
long intervalTime = getConnectModeTime(connectMode);
|
||||
//防止修改了时间一直返回false
|
||||
if (lastTime > nowTime) {
|
||||
return true;
|
||||
}
|
||||
//防止一分钟内重复请求
|
||||
return nowTime - lastTime > intervalTime && nowTime - lastTime > ONE_MINUTES_TIME;
|
||||
boolean refresh = nowTime - lastTime > intervalTime && nowTime - lastTime > ONE_MINUTES_TIME;
|
||||
return refresh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ public class NetInterfaceManager {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Observable<BaseResponse<List<AlarmClockData>>> getAlarmClockApiObservable() {
|
||||
public Observable<BaseResponse<List<AlarmClockData>>> getAlarmClockObservable() {
|
||||
return mRetrofit
|
||||
.create(AlarmClockApi.class)
|
||||
.getAlarmClockApiApi(Utils.getSerial())
|
||||
@@ -326,27 +326,31 @@ public class NetInterfaceManager {
|
||||
}
|
||||
|
||||
public void getHealthCode(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, HealthCodeCallback callback) {
|
||||
ConnectMode connectMode = ConnectMode.ONE_HOUR;
|
||||
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
|
||||
if (refresh) {
|
||||
connectMode = ConnectMode.DEFAULT;
|
||||
}
|
||||
if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_HEALTH_CODE, connectMode)) {
|
||||
getHealthCode(lifecycle, callback);
|
||||
} else {
|
||||
String jsonString = mCacheHelper.getAsString(URLAddress.GET_HEALTH_CODE);
|
||||
//为 "" 是已经请求成功的
|
||||
if (jsonString == null) {
|
||||
getHealthCode(lifecycle, callback);
|
||||
getHealthCodeCache(lifecycle, callback);
|
||||
}
|
||||
}
|
||||
|
||||
private void getHealthCodeCache(BehaviorSubject<ActivityEvent> lifecycle, HealthCodeCallback callback) {
|
||||
String jsonString = mCacheHelper.getAsString(URLAddress.GET_HEALTH_CODE);
|
||||
//为 "" 是已经请求成功的
|
||||
if (jsonString == null) {
|
||||
getHealthCode(lifecycle, callback);
|
||||
} else {
|
||||
Gson gson = new Gson();
|
||||
Type type = new TypeToken<List<HealthCode>>() {
|
||||
}.getType();
|
||||
List<HealthCode> healthCodeList = gson.fromJson(jsonString, type);
|
||||
if (healthCodeList == null || healthCodeList.size() == 0) {
|
||||
callback.noData();
|
||||
} else {
|
||||
Gson gson = new Gson();
|
||||
Type type = new TypeToken<String>() {
|
||||
}.getType();
|
||||
List<HealthCode> healthCodeList = gson.fromJson(jsonString, type);
|
||||
if (healthCodeList == null || healthCodeList.size() == 0) {
|
||||
callback.noData();
|
||||
} else {
|
||||
callback.setHealthCode(healthCodeList);
|
||||
}
|
||||
callback.setHealthCode(healthCodeList);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -365,8 +369,10 @@ public class NetInterfaceManager {
|
||||
Log.e("getHealthCode", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
List<HealthCode> healthCodeList = listBaseResponse.data;
|
||||
mCacheHelper.put(URLAddress.GET_HEALTH_CODE, GsonUtils.toJsonString(healthCodeList));
|
||||
callback.setHealthCode(healthCodeList);
|
||||
} else {
|
||||
mCacheHelper.put(URLAddress.GET_HEALTH_CODE, "");
|
||||
callback.noData();
|
||||
}
|
||||
}
|
||||
@@ -374,6 +380,7 @@ public class NetInterfaceManager {
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getHealthCode", "onError: ");
|
||||
getHealthCodeCache(lifecycle, callback);
|
||||
callback.onError();
|
||||
onComplete();
|
||||
}
|
||||
@@ -386,4 +393,95 @@ public class NetInterfaceManager {
|
||||
}
|
||||
|
||||
|
||||
public interface AlarmClockCallback {
|
||||
void setAlarmClock(List<AlarmClockData> alarmClockList);
|
||||
|
||||
void setAlarmClockEmpty();
|
||||
|
||||
void onError();
|
||||
}
|
||||
|
||||
public void getAlarmClock(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, AlarmClockCallback callback) {
|
||||
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
|
||||
if (refresh) {
|
||||
connectMode = ConnectMode.DEFAULT;
|
||||
}
|
||||
if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_ALARM_CLOCK, connectMode)) {
|
||||
getAlarmClock(lifecycle, callback);
|
||||
} else {
|
||||
getAlarmClockCache(lifecycle, callback);
|
||||
}
|
||||
}
|
||||
|
||||
public void getAlarmClockCache(BehaviorSubject<ActivityEvent> lifecycle, AlarmClockCallback callback) {
|
||||
String jsonString = mCacheHelper.getAsString(URLAddress.GET_ALARM_CLOCK);
|
||||
//为 "" 是已经请求成功的
|
||||
if (jsonString == null) {
|
||||
getAlarmClock(lifecycle, callback);
|
||||
} else {
|
||||
Gson gson = new Gson();
|
||||
Type type = new TypeToken<List<AlarmClockData>>() {
|
||||
}.getType();
|
||||
List<AlarmClockData> list = gson.fromJson(jsonString, type);
|
||||
if (list == null || list.size() == 0) {
|
||||
callback.setAlarmClockEmpty();
|
||||
} else {
|
||||
callback.setAlarmClock(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void getAlarmClock(BehaviorSubject<ActivityEvent> lifecycle, AlarmClockCallback callback) {
|
||||
getAlarmClockObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
|
||||
.subscribe(getAlarmClockObserver(callback));
|
||||
}
|
||||
|
||||
public void getAlarmClock(AlarmClockCallback callback) {
|
||||
getAlarmClockObservable()
|
||||
.subscribe(getAlarmClockObserver(callback));
|
||||
}
|
||||
|
||||
public void getAlarmClock() {
|
||||
getAlarmClockObservable()
|
||||
.subscribe(getAlarmClockObserver(null));
|
||||
}
|
||||
|
||||
public Observer<BaseResponse<List<AlarmClockData>>> getAlarmClockObserver(AlarmClockCallback callback) {
|
||||
return new Observer<BaseResponse<List<AlarmClockData>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getAlarmClockObserver", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<AlarmClockData>> listBaseResponse) {
|
||||
Log.e("getAlarmClockObserver", "onNext: ");
|
||||
if (listBaseResponse.code == 200) {
|
||||
List<AlarmClockData> alarmClockData = listBaseResponse.data;
|
||||
if (alarmClockData != null && alarmClockData.size() != 0) {
|
||||
if (callback != null) callback.setAlarmClock(alarmClockData);
|
||||
} else {
|
||||
if (callback != null) callback.setAlarmClockEmpty();
|
||||
}
|
||||
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, GsonUtils.toJsonString(alarmClockData));
|
||||
} else {
|
||||
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, "");
|
||||
if (callback != null) callback.setAlarmClockEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getAlarmClockObserver", "onError: " + e.getMessage());
|
||||
if (callback != null) callback.onError();
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getAlarmClockObserver", "onComplete: ");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class MainSPresenter implements MainSContact.Presenter {
|
||||
|
||||
@Override
|
||||
public void getAlarmClock() {
|
||||
NetInterfaceManager.getInstance().getAlarmClockApiObservable()
|
||||
NetInterfaceManager.getInstance().getAlarmClockObservable()
|
||||
.subscribe(new Observer<BaseResponse<List<AlarmClockData>>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
Reference in New Issue
Block a user