Tôi hiện đang cố gắng thiết lập Quét WiFi trong ứng dụng Android của mình quét các điểm truy cập WiFi cứ 30 giây một lần.Android - Kiểm soát tác vụ với Bộ hẹn giờ và Bộ hẹn giờ?
Tôi đã sử dụng Bộ hẹn giờ và Bộ hẹn giờ để quét chạy đúng theo khoảng thời gian mà tôi yêu cầu.
Tuy nhiên, tôi muốn có thể dừng và bắt đầu quét khi người dùng nhấn nút và tôi hiện đang gặp sự cố khi dừng và sau đó khởi động lại Bộ hẹn giờ và Bộ hẹn giờ.
Đây là mã của tôi
TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();
public void doWifiScan(){
scanTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
wifiManager.scan(context);
Log.d("TIMER", "Timer set off");
}
});
}};
t.schedule(scanTask, 300, 30000);
}
public void stopScan(){
if(scanTask!=null){
Log.d("TIMER", "timer canceled");
scanTask.cancel();
}
}
Vì vậy, Timer và công tác bắt đầu tốt đẹp và quá trình quét sẽ xảy ra mỗi 30 giây tuy nhiên tôi không thể làm cho nó dừng lại, tôi có thể ngừng Timer nhưng nhiệm vụ vẫn xảy ra và scanTask. cancel() dường như không hoạt động.
Có cách nào tốt hơn để thực hiện việc này không? Hoặc tôi thiếu một cái gì đó trong các lớp Timer/TimerTask?
tôi đã cố gắng để kiểm tra boolean trên scanTask như boolean này tf = scanTask.cancel(); Nhưng bây giờ tôi nhận được một ngoại lệ con trỏ Null trên dòng đó. Tuy nhiên, nhiệm vụ đang chạy tốt? Tôi cuối cùng sẽ chạy mã trong Dịch vụ để sử dụng postDelayed là một tùy chọn? –
Rõ ràng, 'scanTask' đang được đặt lại thành' null' và từ các đoạn mã bạn đã trình bày thì không thể nói lý do tại sao hay nhow. 'postDelayed()' không phải là một tùy chọn trong một 'Service', nhưng không rõ tại sao bạn muốn/cần một' Service' trong trường hợp này. – CommonsWare
scanTask không được sử dụng ở bất kỳ nơi nào khác trong mã của toàn bộ ứng dụng, cũng không phải là Timer, những gì tôi đã đăng là toàn bộ việc sử dụng Timer t và TimerTask scanTask. Tôi muốn tạo ra một ứng dụng với tối thiểu không có giao diện người dùng để đọc về Android một dịch vụ là cách để làm điều này? –