android 从第一个页面跳转到第二个页面之后 在第二个页面的按钮上开始一个倒计时 要怎么实现
1个回答
展开全部
可以使用Handler来做
比如下面的代码片段,开始一个30秒的倒计时
在Application.onCreate()里TestMain.getInstance().setContext(this);
或则在你的第二个页面onCreate()里TestMain.getInstance().setContext(this);
之后启动倒计时并刷新页面
TestMain.getInstance().startCountdownTask(new CountdownTask("taskid1", 30));
public class TestMain {
//用于保存倒计时任务已经完成的计数
private SharedPreferences mCountdownPrefs;
private Handler mCountdownHandler;
public static final TestMain INSTANCE = new TestMain();
private TestMain() {}
public static TestMain getInstance() {
return INSTANCE;
}
//在主线程里调用,比如Application.onCreate()中TestMain.getInstance().setContext(this);
public void setContext(Context context) {
mCountdownPrefs = context.getSharedPreferences("countdwon", Context.MODE_PRIVATE);
mCountdownHandler = new Handler();
}
//在需要倒计时任务的时候调用
public void startCountdownTask(final CountdownTask countdownTask) {
//如果有未完成的倒计时任务,读取上次倒计时到几了, 否则就是设置的count次
int count = mCountdownPrefs.getInt(countdownTask.taskId, countdownTask.count);
countdownTask.count = count;
//首先执行一次
countdownTask.notify(countdownTask.count);
//之后每一秒执行一次
mCountdownHandler.postDelayed(new Runnable() {
@Override
public void run() {
//1秒执行一次
if (countdownTask.countDown()) {
mCountdownHandler.postDelayed(this, 1000);
} else {
//倒计时结束
mCountdownHandler.removeCallbacks(this);
//移除任务
mCountdownPrefs.edit().remove((countdownTask.taskId)).commit();
}
}
}, 1000);
}
public static class CountdownTask {
/**倒计时起始值*/
private int count = 30;
/**倒计时任务id*/
private String taskId = "";
public CountdownTask(int count, String taskId) {
this.count = count;
this.taskId = taskId;
}
private boolean countDown() {
count--;
boolean isContinue = count>=0;
notify(Math.max(count, 0));
return isContinue;
}
//通知更新
public void notify(int current) {
//UI更新倒计时数字,current是当前倒计时到多少了
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询