मैं खोज करने के लिए निम्नलिखित कोड का उपयोग जब एक EditText में उपयोगकर्ता प्रकार:उपयोगकर्ता टाइपिंग करते समय EditText पर एकाधिक ट्रिगर्स से कैसे बचें?
EditText queryView = (EditText) findViewById(R.id.querybox);
queryView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
triggerSearch(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
बहरहाल, यह कई बार चलाता है जब उपयोगकर्ता एक शब्द लिख रहा है। ऐसा होता है कि उपयोगकर्ता "हैलो" टाइप कर रहा है, यह कोड मूल्यों के साथ 5 बार ट्रिगर करेगा ("एच", "वह", "हेल", "नरक", "हैलो")। आम तौर पर, यह ठीक होगा लेकिन ट्रिगर की गई खोज महंगी है और मैं मध्यवर्ती खोजों पर संसाधनों को बर्बाद नहीं करना चाहता हूं जो कि बहुत अच्छे उपयोग नहीं हैं। मैं जो चाहता हूं वह एक श्रोता है जो उपयोगकर्ता टाइपिंग शुरू करने के बाद केवल कुछ निश्चित सीमा को ट्रिगर करता है, या triggerSearch
पर कॉल करने से पहले श्रोता में प्रतीक्षा करता है, और यदि कोई अन्य ईवेंट उस प्रतीक्षा से पहले ट्रिगर होता है, तो खुद को रद्द कर देता है।
यह हैंडलर क्लास स्थिर होना चाहिए या लीक हो सकता है। – Choletski
@Choletski कृपया विस्तार से बताएं कि लीक कैसे हो सकती हैं और स्थैतिक इसे रोक देगा? – jitenagarwal19
@ jitenagarwal19 एक स्थिर हैंडलर संलग्न कक्षा – andrei