我有这个代码,它每秒调用一个函数。该功能可以完成与速度测试进度相关的大量任务。
正如您所看到的那样,可见性设置为“消失”的行。在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();
}
答案 0 :(得分:3)
Chronometer
通常不是你用来执行后台任务的东西(通过这样做,你依赖于表示层中的某些东西来执行业务逻辑!)。在不使用UI对象的情况下,每隔 n 秒执行后台任务有很多种不同的方法,一种相当好的方法是使用Handler
,它可以重复运行{{}}中包含的任务。 {1}}每 n 毫秒,如下所示:
Runnable