以下是一个简单的Android倒计时计时器的示例代码,包括了onPreExecute和onPostExecute方法的实现:
public class CountdownTimer extends AsyncTask {
private TextView textView;
private int duration;
public CountdownTimer(TextView textView, int duration) {
this.textView = textView;
this.duration = duration;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// 在倒计时开始之前的UI操作
textView.setText("倒计时开始");
}
@Override
protected Void doInBackground(Void... voids) {
// 后台执行倒计时操作
for (int i = duration; i >= 0; i--) {
try {
Thread.sleep(1000);
publishProgress(i); // 更新进度
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// 更新UI,显示倒计时的剩余时间
textView.setText(String.valueOf(values[0]));
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 倒计时结束后的UI操作
textView.setText("倒计时结束");
}
}
使用该计时器时,可以在Activity或Fragment的代码中调用它:
TextView textView = findViewById(R.id.text_view);
CountdownTimer countdownTimer = new CountdownTimer(textView, 10); // 倒计时10秒
countdownTimer.execute();
在这个示例中,onPreExecute方法会在倒计时开始之前被调用,可以用来进行一些初始化操作,如显示倒计时开始的提示信息。而onPostExecute方法会在倒计时结束后被调用,可以用来进行一些结束时的UI操作,如显示倒计时结束的提示信息。
倒计时的具体逻辑在doInBackground方法中实现,通过循环更新倒计时的剩余时间,并使用publishProgress方法将时间传递给onProgressUpdate方法,在onProgressUpdate方法中更新UI显示剩余时间。
请注意,AsyncTask的使用需要遵循一些限制和注意事项,请参考官方文档以了解更多信息。