2012-10-19 30 views
9

मेरे पास फ़ोनगैप में बनाया गया एक ऐप है जो मोबाइल डिवाइस के निर्देशांक को ट्रैक करने के लिए navigator.geolocation कॉल का उपयोग करता है। उपयोगकर्ता ट्रैकिंग शुरू करने के साथ-साथ इसे समाप्त करने के नियंत्रण में है। ऐप को पृष्ठभूमि में समन्वय अद्यतन प्राप्त करने के लिए बनाया गया था। ऐप एंड्रॉइड और आईओएस डिवाइस दोनों के लिए जारी किया गया है।स्थान एकत्र करते समय फ़ोनगैप ऐप पृष्ठभूमि में मर जाता है

एंड्रॉइड संस्करण पृष्ठभूमि में होने पर क्रैश होने की संभावना प्रतीत होता है। कुछ फोनों पर यह ठीक है लेकिन उनमें से बहुत से, ऐप बस मर जाएगा जबकि यह पृष्ठभूमि में समन्वय डेटा एकत्रित करना है। मैंने नीचे एक लॉग कैट लॉग पोस्ट किया है। ऐसा लगता है कि CCWalkerActivity पर Activity प्रबंधक के बाद शीघ्र ही "अब नहीं चाहता" प्रक्रिया (दोनों को नीचे बोल्ड किया गया है) के बाद एक जीत की मृत्यु होती है। हालांकि, मैं यह निर्धारित नहीं कर सकता कि यह क्यों हो रहा है और यह इतनी बार क्यों हो रहा है।

क्या यह फोनगैप के साथ कोई समस्या है? एक प्लगइन बनाना होगा जो प्रक्रिया को अग्रभूमि सेवा (startForeground() का उपयोग करके) लाभकारी हो सकता है?

 
10-19 14:50:12.439 D/dalvikvm( 496): GC_CONCURRENT freed 1917K, 28% free 12417K/17031K, external 11622K/13670K, paused 12ms+10ms 
10-19 14:50:13.040 D/CordovaLog(6275): isGPSEnabled succeeded, accuracy: 12 
10-19 14:50:13.040 D/CordovaLog(6275): file:///android_asset/www/lib.js: Line 24 : isGPSEnabled succeeded, accuracy: 12 
10-19 14:50:13.040 I/Web Console(6275): isGPSEnabled succeeded, accuracy: 12 at file:///android_asset/www/lib.js:24 
10-19 14:50:13.072 D/CordovaLog(6275): collectLocationData success: 12 
10-19 14:50:13.072 D/CordovaLog(6275): file:///android_asset/www/lib.js: Line 24 : collectLocationData success: 12 
10-19 14:50:13.072 I/Web Console(6275): collectLocationData success: 12 at file:///android_asset/www/lib.js:24 
10-19 14:50:14.072 D/WifiLocator( 976): Too many no-location APs. Will not compute a location nor go to the server. hasLocation=0 noLocation=0 cacheMiss=0 
10-19 14:50:14.072 D/CellLocator( 976): Found cell location: Position [redacted] 
10-19 14:50:14.072 D/androidNlpServiceThread( 976): reporting Location[mProvider=network,mTime=1350672614078,mLatitude=40.8390777,mLongitude=-73.6949326,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=1123.0,mExtras=Bundle[{networkLocationSource=cached, networkLocationType=cell}]] 
10-19 14:50:14.087 D/libgps ( 496): GpsInterface_inject_location(40.839078, -73.694933, 1123.000) 
10-19 14:50:14.087 D/libgps ( 496): MPDINJPOS_REQ msg id 12015 
10-19 14:50:14.087 D/ClientReporter( 976): reported location 
10-19 14:50:14.095 D/CordovaLog(6275): collectLocationData success: 1123 
10-19 14:50:14.095 D/CordovaLog(6275): file:///android_asset/www/lib.js: Line 24 : collectLocationData success: 1123 
10-19 14:50:14.095 I/Web Console(6275): collectLocationData success: 1123 at file:///android_asset/www/lib.js:24 
10-19 14:50:14.118 D/androidNlpServiceThread( 976): adding listener com.[email protected]40552710 with period 45 
10-19 14:50:14.118 D/androidNetworkLocationListeners( 976): Still have listener com.[email protected]40552710 
10-19 14:50:14.118 I/ActivityManager( 496): No longer want com.CCtracks.CCWalker (pid 6275): hidden #21 
10-19 14:50:14.126 D/WifiLocator( 976): Too many no-location APs. Will not compute a location nor go to the server. hasLocation=0 noLocation=0 cacheMiss=0 
10-19 14:50:14.126 D/CellLocator( 976): Found cell location: Position [redacted] 
10-19 14:50:14.126 D/androidNlpServiceThread( 976): reporting Location[mProvider=network,mTime=1350672614137,mLatitude=40.8390777,mLongitude=-73.6949326,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=1123.0,mExtras=Bundle[{networkLocationSource=cached, networkLocationType=cell}]] 
10-19 14:50:14.134 D/ClientReporter( 976): reported location 
10-19 14:50:14.204 I/WindowManager( 496): WIN DEATH: Window{405a97d0 com.CCtracks.CCWalker/com.CCtracks.CCWalker.CCWalkerActivity paused=false} 
10-19 14:50:14.228 D/androidNlpServiceThread( 976): adding listener com.[email protected]40552710 with period 86400 
10-19 14:50:14.228 D/androidNetworkLocationListeners( 976): Still have listener com.[email protected]40552710 
10-19 14:50:14.236 D/WifiLocator( 976): Too many no-location APs. Will not compute a location nor go to the server. hasLocation=0 noLocation=0 cacheMiss=0 
10-19 14:50:14.236 D/CellLocator( 976): Found cell location: Position [redacted] 
10-19 14:50:14.236 D/androidNlpServiceThread( 976): reporting Location[mProvider=network,mTime=1350672614246,mLatitude=40.8390777,mLongitude=-73.6949326,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=1123.0,mExtras=Bundle[{networkLocationSource=cached, networkLocationType=cell}]] 
10-19 14:50:14.243 D/ClientReporter( 976): reported location 
10-19 14:50:14.595 W/GpsLocationProvider( 496): Unneeded remove listener for uid 1000 
10-19 14:50:14.595 D/libgps_GpsMgr( 496): schedGps() mode: 3, tbf: 0, accuracy: 0, perf: 0, pAgps: null 
10-19 14:50:14.595 D/libgps ( 496): GpsInterface_stop() 
10-19 14:50:14.603 D/libgps ( 496): action_thread_main(): BP not in session, sending fake END callback 
10-19 14:50:14.603 D/libgps ( 496): status_cb: GPS_STATUS_SESSION_END (2) 
10-19 14:50:14.603 D/libgps_GpsMgr( 496): sched() set mode: 3, tbf: 0 
10-19 14:50:14.634 D/libgps ( 496): GpsInterface_inject_location(40.839078, -73.694933, 1123.000) 
10-19 14:50:14.634 D/libgps ( 496): MPDINJPOS_REQ msg id 12015 

उत्तर

2

अपने अनुप्रयोग प्रक्रिया या यह प्रणाली किसी भी समय मारा जा सकता है अन्य एप्लिकेशन के लिए स्मृति को मुक्त करने के अग्रभाग में स्थित किसी भी गतिविधियों foregrounded सेवाओं नहीं है, तो।

तो आपके मामले में, Activity.onPause के बाद जब उपयोगकर्ता आपके ऐप को छोड़ देते हैं तो उदाहरण के लिए होम बटन आपकी ऐप प्रक्रिया किसी भी समय मारे जा सकती है।

http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle

1

आप किसी प्रकार का सेवा बनाने के लिए इतना है कि यह भले ही अपने अनुप्रयोग नहीं चल रहा है तब तक चलते रहेंगे जरूरत है। (यदि आपका अग्रभूमि में नहीं है और सिस्टम को स्मृति की आवश्यकता है तो आपका ऐप किसी भी समय मारा जा सकता है)।

ऐसा करने के लिए, आपको मूल कोड (एंड्रॉइड ऐप के लिए जावा) लिखना होगा। एक सेवा लिखने या फोनगैप प्लगइन बेहतर तरीके से आधिकारिक डॉक्टर में देखें।