2011-03-31 13 views
5

मैं ट्रैक कर रहा हूं कि प्रत्येक ऐप के ऑनस्यूम() और minusActivity() से प्लसएक्टिविटी() को कॉल()एंड्रॉइड एप्लिकेशन पृष्ठभूमि के लिए सरल जांच

से प्लसएक्टिविटी() को कॉल करके मेरे ऐप (जो 0 या 1 होना चाहिए) में कितनी सक्रियताएं दिखाई दे रही हैं

प्लस/minusActivity मेरे myplication वर्ग में हैं, जो एप्लिकेशन को बढ़ाता है।

विधियां बढ़ती हैं और काउंटर कम करती हैं। हर बार minusActivity() कहा जाता है, यह भी एक रननेबल पोस्ट करता है जो 2 सेकंड के बाद चलता है। जब रननेबल निष्पादित होता है, तो पिछली बार 2 सेकंड पहले बंद होने के बाद दूसरी गतिविधि खोला नहीं गया है (उदाहरण के लिए अग्रभूमि एक्टिविटीज == 0 क्योंकि प्लस एक्टिविटी() को 2 सेकेंड के भीतर कुछ भी नहीं कहा जाता है), तो यह कुछ सामान करने की विधि को कॉल करता है जो होने की आवश्यकता है जब पृष्ठभूमि।

यहाँ एक टुकड़ा है:

public void plusActivity(){ 
    foregroundedActivities++; 
} 

public void minusActivity(){ 
    foregroundedActivities--; 
    timingHandler.removeCallbacks(checkBackgroundTask); 
    timingHandler.postDelayed(checkBackgroundTask, 2000); 
} 

public void checkIfBackgrounded(){ 
    if(foregroundedActivities==0){ 
     doWhateverWeDoWhenBackgrounded(); 
    } 
} 

public Runnable checkBackgroundTask=new Runnable(){ 

    @Override 
    public void run() { 
     checkIfBackgrounded(); 
    } 

}; 

को देखते हुए 2-सेकंड समय सीमा इस प्रक्रिया में चल रही है, और कहा कि एक गतिविधि के लिए कोई कॉलबैक शामिल कर रहे हैं, यह एक स्वीकार्य रास्ता पृष्ठभूमि का पता लगाने पूरा करने के लिए है, या मैं सच में करना सेवा के साथ यह सब करने की ज़रूरत है? ऐसा लगता है कि बहुत सारे ओवरहेड हैं और मुझे कोई लाभ नहीं दिख रहा है, क्योंकि यह ठीक काम करता प्रतीत होता है।

उत्तर

1

आपका समाधान काम कर सकता है लेकिन मुझे नहीं पता।

आप BroadcastReceiver का उपयोग करने में सक्षम हो सकते हैं। यदि आप ब्रॉडकास्ट रिसीवर का उपयोग करते हैं तो आप अपने प्लस/माइनस कोड के साथ एक गतिविधि निष्पादित करते समय एक इरादा जारी कर सकते हैं। ब्रॉडकास्ट रिसीवर फिर से आपके ऐप को निष्पादित करने में सक्षम होगा ...

संबंधित मुद्दे

 संबंधित मुद्दे