मैं वर्तमान में अपने एंड्रॉइड एप्लिकेशन में एक वाईफाई स्कैन स्थापित करने की कोशिश कर रहा हूं जो हर 30 सेकंड में वाईफाई एक्सेस पॉइंट्स के लिए स्कैन करता है।एंड्रॉइड - टाइमर और टाइमर टास्क के साथ एक कार्य को नियंत्रित करना?
मैंने टाइमर और टाइमरटास्क का उपयोग किया है ताकि स्कैन को अंतराल पर सही तरीके से चलने के लिए उपयोग किया जा सके।
हालांकि मैं उपयोगकर्ता को बटन दबाते समय स्कैनिंग को रोकने और स्कैनिंग शुरू करने में सक्षम होना चाहता हूं और मुझे वर्तमान में परेशानी हो रही है और फिर टाइमर और टाइमरटास्क को पुनरारंभ करना है।
यहाँ मेरी कोड
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();
}
}
है तो टाइमर और कार्य ठीक शुरू करने और स्कैन हर 30 सेकंड होता है लेकिन मैं नहीं कर सकते इसे रोकने के लिए मिलता है, मैं टाइमर बंद कर सकते हैं, लेकिन कार्य अभी भी होता है और scanTask। रद्द करें() या तो काम नहीं कर रहा है।
क्या ऐसा करने का कोई बेहतर तरीका है? या क्या मैं टाइमर/टाइमर टास्क कक्षाओं में कुछ खो रहा हूं?
मैं इस बूलियन तरह scanTask पर बूलियन जाँच करने की कोशिश की टीएफ = स्कैनटास्क.cancel(); लेकिन अब मुझे उस रेखा पर एक नल सूचक अपवाद मिलता है। हालांकि कार्य स्वयं ठीक चल रहा है ?? मैं अंततः सेवा में कोड चला रहा हूं, तो पोस्टडेलड का उपयोग करना एक विकल्प होगा? –
जाहिर है, 'स्कैनटास्क' को' शून्य 'पर रीसेट किया जा रहा है, और आपके द्वारा प्रस्तुत कोड खंडों से यह कहना असंभव है कि क्यों या नहीं। 'postDelayed() '' सेवा' में कोई विकल्प नहीं है, लेकिन यह स्पष्ट नहीं है कि आप इस मामले में' सेवा 'क्यों चाहते हैं। – CommonsWare
पूरे एप्लिकेशन के कोड में कहीं भी स्कैनटास्क का उपयोग नहीं किया जाता है, न ही टाइमर है, जो मैंने पोस्ट किया है वह टाइमर टी और टाइमरटास्क स्कैनटास्क का पूरा उपयोग है। मैं एंड्रॉइड के बारे में पढ़ने से कम से कम यूआई के साथ एक एप्लीकेशन बनाना चाहता हूं, यह सेवा करने का तरीका है? –