将 Chronometer 设置为 gone visibility 会阻止它工作

Setting Chronometer to gone visibility stops it from working

我有这段代码,它每秒调用一个函数。该函数执行与速度测试进度相关的许多任务。

如您所见,有一行可见性设置为 "gone"。在 Android 8.1.0 中,这会导致 Chronometer 失败。函数 onTimer() 永远不会被调用。在 7.1.1 中,此代码有效并且测试按预期运行。

我需要保留计时器机制,但我不想看到计时器。

我有哪些选择?

   public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            setContentView(R.layout.test);

            // 1 second timer
            Timer = (Chronometer)findViewById(R.id.Chronometer01);
            Timer.setVisibility(Chronometer.GONE);

            Timer.setOnChronometerTickListener(new OnChronometerTickListener()
            {
                @Override
                public void onChronometerTick(Chronometer arg0) 
                {
                    OnTimer();
                };
            });
            Timer.start();
        }

A​​ Chronometer 通常不是您用来执行后台任务的东西(通过这样做,您依赖于表示层中的某些东西来执行业务逻辑!)。在不使用 UI 对象的情况下,每 n 秒执行一次后台任务的方法有很多,一种相当普遍接受的方法是使用 Handler,它可以重复运行 每 n 毫秒包含在 Runnable 中的任务,如下所示:

Handler handler = new Handler();

private Runnable runnable = new Runnable () {
    @Override
    public void run() {
        OnTimer(); // Run your code
        handler.postDelayed(this, 1000); // re-run this Runnable object in 1 second
   }  
}

handler.post(runnable); // run the Runnable object now