Commit 29b3cefc by 段启岩

短信登录定时器优化

parent 914302a8
......@@ -11,8 +11,6 @@ import android.widget.Toast;
import androidx.lifecycle.Observer;
import java.util.concurrent.ScheduledFuture;
import javax.inject.Inject;
import cn.yunliyunwai.beyondclouds.R;
......@@ -26,8 +24,6 @@ public class LoginActivity extends BaseActivity<AuthenticationViewModel, Activit
private Handler handler = new Handler();
private ScheduledFuture verifyCodeScheduledFuture;
@Inject
AuthenticationViewModel authenticationViewModel;
......@@ -140,7 +136,7 @@ public class LoginActivity extends BaseActivity<AuthenticationViewModel, Activit
binding.btnSendVerifyCode.setEnabled(false);
binding.btnSendVerifyCode.setClickable(false);
binding.btnSendVerifyCode.setTextColor(getResources().getColor(R.color.colorTextLevel5));
verifyCodeScheduledFuture = authenticationViewModel.startVerifyCodeCountdown();
authenticationViewModel.startVerifyCodeCountdown();
binding.txtSeconds.setVisibility(View.VISIBLE);
}
......@@ -161,12 +157,6 @@ public class LoginActivity extends BaseActivity<AuthenticationViewModel, Activit
public void onChanged(Integer leftSeconds) {
if (authenticationViewModel.getVerifyCodeState().getValue() != AuthenticationViewModel.VerifyCodeState.UN_SEND) {
binding.btnSendVerifyCode.setText(leftSeconds + "");
if (leftSeconds == 0) {
if (null != verifyCodeScheduledFuture) {
verifyCodeScheduledFuture.cancel(true);
}
authenticationViewModel.resetVerifyCodeState();
}
}
}
});
......
......@@ -165,6 +165,8 @@ public class AuthenticationViewModel extends ViewModel {
private Context mContext;
private ScheduledFuture mVerifyCodeScheduledFuture;
@Inject
public AuthenticationViewModel(Context context, Lazy<IUserRepository> userRepositoryLazy, AppExecutors appExecutors) {
......@@ -177,6 +179,7 @@ public class AuthenticationViewModel extends ViewModel {
this.loginWay.setValue(LoginWay.ACCOUNT);
this.passwordVisibility.setValue(false);
this.verifyCodeState.setValue(VerifyCodeState.UN_SEND);
this.verifyCodeLeftSeconds.setValue(0);
}
public LiveData<AuthenticationState> getAuthenticationState() {
......@@ -417,24 +420,24 @@ public class AuthenticationViewModel extends ViewModel {
/**
* 开始倒计时
*/
public ScheduledFuture startVerifyCodeCountdown() {
verifyCodeLeftSeconds.setValue(60);
return appExecutors.scheduledExecutor().scheduleAtFixedRate(new Runnable() {
public void startVerifyCodeCountdown() {
if (getVerifyCodeLeftSeconds().getValue() > 0 || getVerifyCodeState().getValue() == VerifyCodeState.UN_SEND) {
return;
}
verifyCodeLeftSeconds.setValue(10);
mVerifyCodeScheduledFuture = appExecutors.scheduledExecutor().scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
int leftTime = verifyCodeLeftSeconds.getValue();
if (leftTime == 0) {
verifyCodeLeftSeconds.postValue(leftTime - 1);
if (leftTime == 1) {
if (null != mVerifyCodeScheduledFuture) {
mVerifyCodeScheduledFuture.cancel(true);
}
verifyCodeState.postValue(VerifyCodeState.UN_SEND);
return;
}
verifyCodeLeftSeconds.postValue(leftTime - 1);
}
}, 1000, 1000, TimeUnit.MILLISECONDS);
}
/**
* 重置短信发送状态
*/
public void resetVerifyCodeState() {
verifyCodeState.setValue(VerifyCodeState.UN_SEND);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment