我有一个简单的秒表代码段。线程在自定义类中运行,它通过“接口”>连接到主活动
public class MainActivity extends AppCompatActivity implements MainActivityInteractionInterface{ public static boolean isRunning = false; Stopwatch stopWatch; private TextView textViewMilliSeconds; private TextView textViewSeconds; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textViewMilliSeconds = findViewById(R.id.textViewStopwatchMilliseconds); textViewSeconds = findViewById(R.id.textViewStopwatchSeconds); stopWatch = new Stopwatch(this, getApplicationContext()); stopWatch.runThread(); } @Override public void updateUI() { String time = String.format(Locale.getDefault(), "%03d", stopWatch.getMilliseconds()); textViewMilliSeconds.setText(time); String timeSeconds = String.format(Locale.getDefault(), "%02d", stopWatch.getSeconds()); textViewSeconds.setText(timeSeconds); } public void startTimer(View view) { isRunning = !isRunning; }
public class Stopwatch { private int milliseconds = 0; private int seconds = 0; public int getMilliseconds() { return milliseconds; } public int getSeconds() { return seconds; } private MainActivityInteractionInterface interactionInterface; private Context applicationContext; public Stopwatch(MainActivityInteractionInterface interactionInterface, Context applicationContext){ this.interactionInterface = interactionInterface; this.applicationContext = applicationContext; } public void runThread(){ final Handler handler = new Handler(); handler.post(new Runnable(){ @Override public void run(){ if(isRunning) { milliseconds++; if (milliseconds == 1000) { milliseconds = 0; seconds++; if(seconds == 60){ seconds = 0; } } } interactionInterface.updateUI(); handler.postDelayed(this, 1); } }); }
处理程序应每1毫秒更新一次,如果有1000毫秒,则经过1秒钟如果我将handler.postDelayed延迟设置为15到1000毫秒,则需要18秒,为什么?
我有一个简单的秒表代码段。线程在自定义类中运行,它通过接口公共类连接到主要活动MainActivity扩展了AppCompatActivity的实现...
看handler.postDelayed(this, 1);
的第二个参数