मैं एक एंड्रॉइड ऐप बनाने की कोशिश कर रहा हूं जो बार-बार हर 10 मिनट में कुछ प्रक्रिया चलाएगा। जैसा कि मैंने पाया है Handlers
टाइमर या शेड्यूलिंग से अधिक विश्वसनीय हैं। तो मैं नीचे दिए गए कोड का उपयोग कर Handlers
का उपयोग करके अपना ऐप विकसित करने जा रहा हूं।बार-बार कार्य के लिए एंड्रॉइड हैंडलर - क्या यह ओवरलैप होगा? टाइमर-कार्य वीएस हैंडलर वीएस अलार्म-मैनेजर
मैं थोड़ा चिंतित है कि नीचे कोड अलग हर बार मैं अनुप्रयोग शुरू करने और उन्हें समानांतर चालू रखने पर Handlers
पैदा करेगा हूँ, के बाद से मैं onCreate
पर Handler
बना रहा हूं हो सकता है।
तो एक समय में पृष्ठभूमि में केवल एक ही Handler
रन रखने का सबसे अच्छा तरीका क्या है?
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new Handler(); // new handler
handler.postDelayed(runnable, 1000*60*10); // 10 mins int.
setContentView(R.layout.activity_pro__sms);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* my set of codes for repeated work */
foobar();
handler.postDelayed(this, 1000*60*10); // reschedule the handler
}
};
बस सोच रहा है: आपके 'दोहराए गए काम' का संदर्भ क्या है? या शायद बेहतर कहा: यह किस तरह का ऐप है? यह सोचने के लिए एक बहुत ही उदार धारणा हो सकती है कि उपयोगकर्ता एक समय में 10+ मिनट के लिए सक्रिय रूप से आपके ऐप का उपयोग करेंगे (जब तक कि यह एक गेम की तरह न हो, इसलिए मेरा प्रश्न)। अग्रभूमि में आपका ऐप * नहीं * होने पर 'हैंडलर' का उपयोग करना, कार्रवाई का सही तरीका नहीं हो सका। –
सेवा का उपयोग क्यों नहीं करें? –
मुझे नींद मोड में भी चलकर कार्य को याद करने की आवश्यकता नहीं है। निष्क्रिय (नींद) मोड में भी सेवाएं सक्रिय हो सकती हैं? या मुझे जागने की ताला लगाने की ज़रूरत है। AlarmManager की तुलना में सेवाओं द्वारा संसाधन उपयोग के बारे में क्या है (अब मैं अलार्म मैनेजर के साथ चीजों की कोशिश कर रहा हूं) –