我想在android中做一个在后面运行的线程。线程使用while循环不断地检查时间,如果匹配,它就会做一些事情。这一切都很好用。但是应用程序没有响应,就好像我根本没有运行线程一样。while仍然会阻塞所有东西。我不明白为什么。
线程代码:
public class AlarmThread implements Runnable {
LocalTime beginTime;
LocalTime endTime;
public AlarmThread(LocalTime beginTime, LocalTime endTime) {
this.beginTime = beginTime;
this.endTime = endTime;
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
currentTime = java.time.LocalTime.now();
if(currentTime.isAfter(beginTime) && currentTime.isBefore(endTime)){
sendNotification();
}
}
}活动:
public void onButtonClickerDatepicker(View v) throws IOException {
LocalTime beginTime = java.time.LocalTime.of(binding.simpleTimePicker.getHour(), binding.simpleTimePicker.getMinute());
LocalTime endTime = java.time.LocalTime.of(binding.simpleTimePicker2.getHour(), binding.simpleTimePicker2.getMinute());
alarmThread = new AlarmThread(beginTime, endTime);
alarmThread.run();
}发布于 2020-07-02 16:30:08
调用Thread.start()以启动Thread.run()以外的线程。更重要的是,你的AlarmThread不是线程,而是可运行的。所以你可以通过下面的代码启动它:
private Thread workerThread = new Thread(new AlarmThread(start, end))
...
...
workerThread.start()为了提高灵活性,我建议您使用HandlerThread
https://stackoverflow.com/questions/62691504
复制相似问题