android - 在 Android 应用程序中同时使用计时器和倒数计时器

标签 android timer countdown chronometer

我正在开发一个 Android 应用程序,我需要在其中显示用户可以完成某项任务的剩余时间,即倒数计时器。如果用户超过了规定的时间,计时器应该开始计时或者变成一个计时表。所以,我需要在同一个组件中同时使用两者。在 API 级别 24 的计时表中添加了一个 setCountdown 方法,但我不能使用它。有人可以提供一些库引用或一些代码,我可以在其中找到实现我的用例的方法。

最佳答案

您可以为此目的使用 Asynctask 并在时间减少时触发广播..我在这里发布示例:

/*******************
 * asyncTask for timer
 ********************/
public class MyTimer extends AsyncTask<String, String, String> {
private AsyncTimer asyncTimer;
private Context context;

public MyTimer(Context context) {
    asyncTimer = (AsyncTimer) context;
    this.context = context;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    asyncTimer.updateUi(false);  //updates UI
}

@Override
protected void onPostExecute(String s) {
    asyncTimer.updateUi(true);
}

@Override
protected void onProgressUpdate(String... values) {
    super.onProgressUpdate(values);
    int time = Integer.parseInt(values[0]);
    Intent i = new Intent(Constants.BROADCAST_TIMER_KEY);
    i.putExtra(Constants.INTENT_BROADCAST_TIME, time);
    context.sendBroadcast(i);
}

@Override
protected String doInBackground(String... params) {
    long i = Integer.parseInt(params[0]);
    while (i >= 0) {
        publishProgress(String.valueOf(i));
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        i = i - 1;
    }
    return null;
}
}

广播改变时间,其中TimeSet是我改变UI上的值的接口(interface)

public class BroadcastTimer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    TimeSet timeSet = (TimeSet) context;
    int time = intent.getExtras().getInt(Constants.INTENT_BROADCAST_TIME);
    int min = (time) / 60;
    int sec = time % 60;
    timeSet.FinalResult(min + context.getString(R.string.str_mins) + sec + context.getString(R.string.str_secs));
}
}

关于android - 在 Android 应用程序中同时使用计时器和倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196782/

相关文章:

java - 尝试运行多个线程时,空指针异常导致强制关闭

java - 将联系人照片添加到 ImageView 的简单方法?

android - 尝试调用虚方法

javascript - 出现错误无法读取未定义的属性 'getTime'

jquery - 倒数计时器到期后重新启动

Android:垂直 3d ListView

Android:进度对话框在加载时更改 ProgressDialog.setMessage()

javascript - 我正在尝试为我的网站制作一个倒计时器,并且我已完成所有编码,但计时器没有显示。我是在 Dreamweaver 中做的

c - 中断的系统调用

javascript - 基本 Javascript 倒计时器的时间比设置的时间长