【问题标题】:Update UI in Activity from Timer从 Timer 更新 Activity 中的 UI
【发布时间】:2015-07-27 05:21:14
【问题描述】:

我正在开发一个体育锻炼应用程序。在我的应用程序中,我启动了一个显示练习的活动。练习完成后,此 Activity 结束并启动一个新的 Activity 以让用户休息。其余部分完成后,再次启动锻炼活动。重复此过程,直到训练时间超过用户定义的时间。

我需要在计时器的每一秒内更新锻炼活动的 UI。

我真的不知道如何处理两个活动共享同一个计时器的方法。

【问题讨论】:

  • 您需要 2 个 CountDownTimers,每个 Activity 一个。准时,一个启动另一个活动。他们基本上做同样的事情。
  • 您不应该在 Android 上使用 Timer,而应使用 Handler。 developer.android.com/training/multiple-threads/… 上甚至还有样本
  • “当练习完成时,这个 Activity 完成并开始一个新的 Activity 让用户休息”——恕我直言,这不是一个特别好的方法。使用一项活动。我刚刚评估了一些可以满足您需求的应用程序。似乎没有人在这些阶段使用不同的活动。 app that I chose 绝对不使用单独的活动。是否使用片段或其他就地 UI 更新取决于您。

标签: android android-activity timer timertask


【解决方案1】:

您可以根据您的计时器需求扩展 Android Activity 类,并从该类扩展您的运动类。示例:

import android.app.Activity;
import java.util.Timer;

public class MyTimedActivity extends Activity {
    Timer timer = new Timer();

    public Timer getTimer() {
        return timer;
    }

    public void setTimer(Timer timer) {
        this.timer = timer;
    }
}

现在,如果您的锻炼课程从 MyTimedActivity 扩展而来,您将在每个活动中获得一个独立于其他活动的计时器。

【讨论】:

  • 并非如此。您使用同一类的 2 个实例。
  • 是的,通过从 MyTimedActivity 扩展的两个活动,您有两个独立的计时器。我编辑了我的答案以使其更清楚。
  • you use only one timer 不,您正在使用 2 个计时器。 2 个计时器对象的实例。所以,它真的是 2 个计时器。
  • 好的,谢谢大家的帮助,最后我将为每个活动使用 2 个计时器。我知道这可能不是启动启动其他 Activity 的 Activity 的最佳方法,但我希望替换所有屏幕,这就是我不使用 Fragments 的原因。
猜你喜欢
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 2015-11-11
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多