簡體   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