Android 中的全局计时器

2023-12-15

我想制作一个计时器,它将显示在我的应用程序的每个活动中。

我知道如何在活动上设置计时器,下面是我的代码

public class Timer extends Activity implements OnClickListener {
    public TextView mTextField;
    private Button btnstart;

    public String formatTime(long millis) { 
        String output = "00:00"; 
        long seconds = millis / 1000; 
        long minutes = seconds / 60; 

        seconds = seconds % 60; 
        minutes = minutes % 60; 

        String secondsD = String.valueOf(seconds); 
        String minutesD = String.valueOf(minutes); 

        if (seconds < 10) 
            secondsD = "0" + seconds; 
        if (minutes < 10) 
            minutesD = "0" + minutes; 

        output = minutesD + " : " + secondsD; 
        return output; 
    } 
    public CountDownTimer Counter1;

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 

        //Declare Start/Stop button 
        btnstart = (Button)findViewById(R.id.btnThread1); 
        btnstart.setOnClickListener(this);
        //Button btnstop = (Button)findViewById(R.id.button02); 
        //Button btnpass = (Button)findViewById(R.id.button03);

        //Declare Text fields to show time left 
        final TextView mCounter1TextField=(TextView)findViewById(R.id.txtThread1); 
        final TextView mCounter2TextField = (TextView)findViewById(R.id.txtThread2); 
        //final TextView mCounter3TextField=(TextView)findViewById(R.id.textView03); 



        //Counter 1 
        Counter1 = new CountDownTimer(120000 , 1000) { 
            public void onTick(long millisUntilFinished) { 
                mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
            } 

            public void onFinish() { 
                mCounter1TextField.setText("Finished!"); 
                // Counter1.start();
            } 
        }; 
    }

    @Override
    public void onClick(View v) {
        if(v == btnstart)
        {
            Counter1.start();
        }

    }
}

我想知道如何使其全球化?


你可以有一个单例类来保存你的CountDownTimer

// This is not a real singleton, Google to get a proper Java implementation
public class TimerSingleton {

  // Should not be public, you should of course encapsulate access to that timer.
  // static keyword says that one timer object is shared by all instance of TimerSingleton 
  public static CountDownTimer timer = new CountDownTimer();
}

// Access to the timer from an activity:
TimerSingleton.timer.start();

第二个选项是将计时器作为自定义应用程序类的成员:使用 Application 类作为全局变量

第三个选项:创建一个本地服务,在启动时启动计时器。

请记住,在选项 1 和 2 的情况下,如果操作系统决定终止您的应用程序,计时器将消失(即,当重新创建活动时,CountDownTimer 对象将被重置)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的全局计时器 的相关文章

随机推荐

  • Windows 应用程序可以选择用 C++ 写入控制台吗?

    我想要一个具有以下行为的 Windows 应用程序 1 如果它是从现有的命令行窗口 cmd exe 启动 那么它将其标准输出写入该控制台 2 如果通过双击其图标来启动它 则它不会打开新控制台 也不会在任何地方写入其标准输出 为了达到 1 我
  • 围绕画布中的中心点旋转图像

    围绕其中心旋转画布上的图像 我尝试了网上的一些例子 但失败了 如果我正在使用bitmap creatbitmap使用矩阵我收到错误 请建议我哪个更好 提前致谢 Aswan 您可以使用矩阵来旋转 首先设置位置 我使用位图中心的坐标 然后进行旋
  • 为什么 sed 不会从文件中删除行?

    我试图从文件中删除特定行 然后将编辑后的行附加到文件中 我得到了最后一部分 但我删除旧行的 sed 命令不起作用 sed userinput d file1 txt gt file2 txt 这最终会将所有文件内容添加到新文件中 而不仅仅是
  • 找到字符串的第一个字符,然后将其与符号C ++进行比较

    尝试检查字符串的第一个字符以查看它是否包含 string pathname test if pathname at 0 if first character is a slash then delete the slash but only
  • 每个源文件的标头

    我试图了解每个源文件方法的一个标头背后的目的 在我看来 标头用于共享函数声明 typedef使用它们的多个文件之间的 和宏 当你为你的头文件 c它的缺点是 每次您想要查看函数声明或宏时 您都需要引用头文件 并且通常更简单的是 所有内容都在一
  • 什么是 pro *c?

    这有什么用 我们如何从数据库中访问数据 Pro C 实际上是一个用 C 代码访问 Oracle 数据库的预编译器 您可以使用以下语句编写代码 int sal EXEC SQL SELECT salary INTO sal FROM empl
  • PHP Composer Autoload 出现类未找到错误

    错误是 Fatal error Uncaught Error Class Championsweb Model VO CompeticionVO not found in E Drive Proyectos ChampionsEclipse
  • 保存来自 url 的图像

    是否可以使用保存图像Visual Basic 2008从 URL 到我的电脑 例如 From www domain com image jpg to C folder image jpg P S 我需要最简单的代码示例 然后我将根据需要进行
  • 将 UISplitViewController 放在自己的 XIB 中?

    我的 iPad 应用程序以显示登录信息的普通 UIView 启动 用户登录后 屏幕应该切换到分割视图 然而 XCode 的 SplitViewTemplate 以及我在网上找到的所有示例 将 UISplitViewController 放置
  • R - 根据与现有列匹配的值索引创建新列数据框

    我有一个名为的数据框imp2 大约 6 000 行 其中有 9 列标记 savres1 savres9 每列中的值为 1 或 0 对于每一行 只有其中 1 列的值为 1 其余均为 0 我想创建一个名为的新专栏 savres 我将在其中放入一
  • API分页最佳实践

    我希望有人帮助我使用我正在构建的分页 API 来处理奇怪的边缘情况 与许多 API 一样 该 API 对大量结果进行分页 如果您查询 foos 您将获得 100 个结果 即 foo 1 100 以及指向 foos page 2 的链接 该链
  • VBA ADO 连接到 .xlsx 文件

    我正在尝试使用 ADO 连接从关闭的 Excel 2007 工作簿 xlsx 复制数据 我有连接字符串工作 但是 当我尝试打开记录集中的命令 倒数第二行 时 出现自动化错误 这在下面的代码中可能不太清楚 所以 wsSummary 是一个工作
  • 如何将 GWT UIBinder 与 Canvas 集成?

    我正在尝试使用 Google Web Toolkit 找到解决办法 现在我正试图得到一个Canvas小部件已启动并运行 但我收到此错误并且不明白为什么 Compiling module de kuntze HelloCanvas Compu
  • 如何在 C# 中创建整数序列?

    F has 序列允许创建序列 seq 0 10 创建从 0 到 10 的数字序列 C 中有类似的东西吗 您可以使用Enumerable Range 0 10 例子 var seq Enumerable Range 0 10 MSDN 页面h
  • Prolog IntList 定义

    如果 IntList 由单调递增的 gt 整数后跟单调递减的整数组成 hill IntList 成功 例如 gt 1 2 5 8 11 6 3 1 是一座小山 但 1 2 5 8 11 6 9 3 1 和 1 2 3 4 5 6 gt 不是
  • SSRS 2008 Word 导出无法横向打印

    我有许多 SSRS 2008 报告需要以横向模式导出到 word 导出时 报告看起来很棒 但当您尝试打印 甚至预览 页面时 Word 似乎尝试以纵向模式打印报告 因此会截断距离页面最左侧超过 8 5 英寸的所有内容 我已确保已进行以下设置
  • 画布像素数据的跨浏览器规范?

    有谁知道当前画布像素数据规范在各种浏览器中可以追溯到多远 如果 没那么远 之前的规格是什么 当你调用或推送像素时 你得到 发送 ImageData data Uint8ClampedArray width Number height Num
  • 处理 Grails 中一对多关系的动态形式参数

    我在这里的主要问题是在一个动态表单中管理一对多关系时处理 pramas 映射 以及通过动态表单编辑 更新域对象时处理一对多的最佳实践 我的问题的输入如下 我已经成功破解了一个表单 该表单允许我在一个动态表单中创建如下所示的域对象 因为没有必
  • 如何从PictureBox中获取真实图像像素点x,y

    我有一个pictureBox2并且它被设置为zoom 我试图找出如何获得图像上真实的 x y 像素位置Mouse Click on pictureBox2 但我尝试了我所知道的 3 种可能的想法 不带 带PointToClient Poin
  • Android 中的全局计时器

    我想制作一个计时器 它将显示在我的应用程序的每个活动中 我知道如何在活动上设置计时器 下面是我的代码 public class Timer extends Activity implements OnClickListener public