首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android工作线程

Android工作线程
EN

Stack Overflow用户
提问于 2020-07-02 15:49:08
回答 1查看 75关注 0票数 0

我想在android中做一个在后面运行的线程。线程使用while循环不断地检查时间,如果匹配,它就会做一些事情。这一切都很好用。但是应用程序没有响应,就好像我根本没有运行线程一样。while仍然会阻塞所有东西。我不明白为什么。

线程代码:

代码语言:javascript
复制
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();
         }
      }
}

活动:

代码语言:javascript
复制
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();

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-02 16:30:08

调用Thread.start()以启动Thread.run()以外的线程。更重要的是,你的AlarmThread不是线程,而是可运行的。所以你可以通过下面的代码启动它:

代码语言:javascript
复制
private Thread workerThread = new Thread(new AlarmThread(start, end))
...
...
workerThread.start()

为了提高灵活性,我建议您使用HandlerThread

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62691504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档