繁体   English   中英

为什么要重写Java.util.TimerTask()?

[英]Why override Java.util.TimerTask()?

此代码部分取自github,用于连续扫描wifi网络信号强度: https//github.com/schollz/find3-android-scanner/blob/master/app/src/main/java/com/internalpositioning/find3 /find3app/ScanService.java

new java.util.Timer().schedule(
                new java.util.TimerTask() {
                    @Override
                    public void run() {
                        synchronized (lock) {
                            if (isScanning == false) {
                                doScan();
                            }
                        }
                    }
                },
                0
        );

其次是4个写的完全相同,但是在第二个最后一行中使用10000,20000,30000,40000毫秒等待而不是0。

我试图了解它到底在做什么。 它似乎唯一真正的功能是等待0秒,10秒,20秒......

那么这样写的重点是什么,并重复相同的代码5次? 有没有更好的方法来做到这一点?

有人可能会改变前4个TimerTask以重用公共类,但第5个不同,因为它也使用stopSelf()方法停止服务:

new java.util.Timer().schedule(
       new java.util.TimerTask() {
            @Override
            public void run() {
                synchronized (lock) {
                    if (isScanning == false) {
                        doScan();
                    }
                }
                stopSelf(); // stop the service
            }
        },
        40000
);

如果检查文件历史记录87827a01019bfb4b18d059f6cfb401b58926590f提交添加重复的TimerTask以提高扫描频率。 以前只有3个TimerTask在提交后有5个。看起来像快速修复而不重构代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM