[英]Android worker thread
我想在 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();
}
調用Thread.start()
以啟動Thread.run()
的線程。 更重要的是,您的 AlarmThread 不是線程,而是 Runnable。 因此,您可以通過以下代碼啟動它:
private Thread workerThread = new Thread(new AlarmThread(start, end))
...
...
workerThread.start()
我建議您使用HandlerThread以獲得靈活性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.