将天文台设置为可见性会使其停止工作

时间:2018-06-06 01:31:49

标签: java android timer visibility chronometer

我有这个代码,它每秒调用一个函数。该功能可以完成与速度测试进度相关的大量任务。

正如您所看到的那样,可见性设置为“消失”的行。在Android 8.1.0中,这会导致计时器失败。函数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();
        }

1 个答案:

答案 0 :(得分:3)

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

Runnable