मैंने अपने नए एप्लिकेशन में एक सेवा शुरू की है। एक अधिसूचना के साथ, सेवा अग्रभूमि है। जब यह एवीडी 2.1 एपीआई लेवल 7 में चलाया जाता है, तो सब ठीक काम करता है। लेकिन जब यह एक सैमसंग गैलेक्सी टैब पर जिंजरब्रेड चला रहा है, तो सेवा शुरू होगी (आइकन और ऐप नाम अधिसूचना क्षेत्र के शीर्ष पर दिखाई देगा), लेकिन कुछ सेकंड बाद, सेवा गायब हो जाती है। लॉग में अंतिम प्रविष्टि जो मैं देख सकता हूं वह मेरे ऐप से जुड़ा हुआ है, मेरे Log.d ("टैगलाइन", "रिटर्निंग" + START_STICKY) का परिणाम है, जो तुरंत "वापस START_STICKY" से पहले होता है; मेरी सेवा का onStartCommand ओवरराइड में, के रूप में इस प्रकार है:START_STICKY, अग्रभूमि एंड्रॉइड सेवा नोटिस के बिना दूर जाती है
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int rc ;
Log.d("Taglines","onStartCommand()");
Toast.makeText(this, "Starting service TagsManager", Toast.LENGTH_SHORT).show();
Log.d("Taglines","Calling super.onStartCommand()");
rc = super.onStartCommand(intent,flags,startId);
Log.d("Taglines","super.onStartCommand return code was " + rc);
createNotification(INITIAL_NOTIFICATION_TEXT);
Log.d("Taglines","Returning with " + START_STICKY);
return START_STICKY ;
}
अधिसूचना इस तरह सेट किया गया है:
D/Taglines(21863): Starting service
D/Taglines(21863): TagsManager(nullary) completed
D/Taglines(21863): onStartCommand()
D/Taglines(21863): Calling super.onStartCommand()
D/Taglines(21863): super.onStartCommand eturn code was 2
D/Taglines(21863): createNotification called
D/Taglines(21863): Obtained reference to Notification Manager
D/Taglines(21863): createNotificacion() .. getApplicationContext
D/Taglines(21863): createNotificacion() ... passing notification
D/Taglines(21863): Starting foreground
D/Taglines(21863): Started
D/Taglines(21863): Returning with 1
:
इस 'adb logcat "जब सेवा प्रारंभ होने से परिणाम है
उसके बाद, कुछ विशेष नहीं (पीआईडी 21863 से कुछ भी नहीं)। बस का एक समूह:
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
W/InputManagerService( 302): Window already focused, ignoring focus gain of: [email protected]
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
D/KeyguardViewMediator( 302): setHidden false
मुझे नहीं लगता कि यह इस मामले में आवश्यक है, लेकिन यहाँ AndroidManifest.xml के संबंधित भाग है:
<service android:name=".TagsManager"
android:exported="false">
</service>
मैं कहाँ गलत हो गया हो सकता है? मैं कौन सी जानकारी प्रदान कर सकता हूं?
हमम ... मैं startForeground के बारे में और अधिक पढ़ता हूं, और ऐसा लगता है कि यह वास्तव में कुछ कार्रवाई करने के बजाए अधिसूचना ऑब्जेक्ट पर ध्वज सेट करता है। तो एक सनकी पर, मैंने अनुक्रम को उलट दिया ताकि अब प्रारंभिक भूमि अधिसूचना प्रबंधक से पहले हो। अब तक, यह बहुत अच्छा लग रहा है। तो अब मैं उस उदाहरण की तलाश कर रहा हूं जिसने मुझे दूसरी तरफ ऐसा करने का नेतृत्व किया ... – Dennis
अफसोस की बात है कि उस अनुक्रम को उलटने की सफलता अल्पकालिक थी। ऐसा लगता है कि चिपचिपा "छड़ी" होगा या नहीं, यह एक जुआ का थोड़ा सा लगता है। इस सेवा को शुरू करने के प्रयासों के _many_ दर्जनों प्रयासों के साथ, मैंने अभी तक तीन बार शुरू किया है। :( – Dennis
ठीक है, क्या आपका गैलेक्सी टैब कम स्मृति की स्थिति का अनुभव कर रहा था, या शायद आपकी सेवा मुख्य धागे पर कुछ स्मृति गहन कर रही थी? –