本列用TImer 和TimerTask实现
首先新建BaseTimerTask 继承 TimerTask
package com.example.latte;
import com.example.latte.net.ITimerListener;
import java.util.TimerTask;
public class BaseTimerTask extends TimerTask {
private ITimerListener listener;
public BaseTimerTask(ITimerListener listener) {
this.listener = listener;
}
@Override
public void run() {
if (listener!=null){
listener.onTimer();
}
}
}
因为在run方法中我们不具体实现,所以我们新建一个接口ITimerListener然后传入到BaseTimerTask,让activity
实现接口 这就让具体的实现到了View中
package com.example.latte.net;
public interface ITimerListener {
void onTimer();
}
最后是我们的activity:
package com.example.latte.details;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatTextView;
import com.example.latte.BaseTimerTask;
import com.example.latte.R;
import com.example.latte.net.ITimerListener;
import java.text.MessageFormat;
import java.util.Timer;
public class GoodsDetailsActivity extends AppCompatActivity implements ITimerListener {
//显示倒计时的TextView
private AppCompatTextView textView=null;
//倒计时时长
private int mCount=10;
private Timer mTimer=null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_goods);
textView=findViewById(R.id.tv_goods);
initTimer();
}
private void initTimer() {
mTimer=new Timer();
BaseTimerTask task=new BaseTimerTask(this);
mTimer.schedule(task,0,1000);
}
@Override
public void onTimer() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (textView!=null){
textView.setText(MessageFormat.format("跳转\\{0}s",mCount));
mCount--;
if (mCount<0){
if (mTimer!=null){
mTimer.cancel();
mTimer=null;
}
}
}
}
});
}
}