मैं वर्तमान में अपने आवेदन में कुछ आंदोलन-पहचान कार्यक्षमता का निर्माण कर रहा हूं। मुझे हर समय फ़ोन जागने के बिना एक्सेलेरोमीटर की लगातार निगरानी करने का कोई तरीका नहीं मिला है। इस पर काबू पाने की कोशिश में, मेरे पास वर्तमान में एक सेवा लागू करने वाला सेंसरवेन्ट लिस्टर है। मैं इस सेवा को अंतराल पर (अलार्म मैनेजर का उपयोग करके) शुरू कर सकता हूं, डिवाइस एक्सेलेरोमीटर से रीडिंग प्राप्त कर सकता हूं, यह निर्धारित कर सकता हूं कि डिवाइस चल रहा है या नहीं, और फिर सेवा बंद कर दें। आम तौर पर, यह इस प्रकार प्रकट होता है:एकाधिक सेवाओं को चलाने
public class MyService extends Service implements SensorEventListener {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
/* Register this SensorEventListener with Android sensor service */
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
/* Unregister SensorEventListener */
}
/* SensorEventListener Implementation ************************/
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
/* Receives callback when sensor values change */
@Override
public void onSensorChanged(SensorEvent event) {
/* Determine if moving & then call stopSelf() to shut service down */
}
}
मैं एक और समस्या है, तथापि, में है कि अपने आवेदन एक दूसरे सेवा है जो किसी भिन्न समय पर शुरू हो जाती है है। जहां तक मुझे पता है, दोनों सेवाओं को एक ही थ्रेड में चलाया जाएगा, जो कि अच्छा नहीं है क्योंकि वे संघर्ष कर सकते हैं।
मुझे यह जानने की ज़रूरत है कि एक ही एप्लिकेशन में एक से अधिक सेवा चलाने के लिए एक सुरक्षित तरीका है। मैंने मानक सेवा वर्ग की बजाय IntentService का उपयोग माना है। मुझे पता है कि इन्हें आमंत्रण संभालने के लिए अपने स्वयं के कार्यकर्ता धागे को लागू किया गया है। समस्या यह है कि मुझे नहीं पता कि मैं एक इंटेंट सेवा के भीतर से सेंसरएवेंट लिस्टनर द्वारा आवश्यक एसिंक्रोनस कॉलबैक के प्रकार को कैसे कार्यान्वित कर सकता हूं। इसे एक और तरीके से रखने के लिए, मुझे कोई गारंटी नहीं है कि सेंसरशैंग पर एक विधि को कॉलबैक प्राप्त होगा इससे पहले कि IntentService अपना काम पूरा कर लेता है और बंद हो जाता है।
इस समस्या के समाधान के लिए किसी भी सुझाव की अत्यधिक सराहना की जाती है।
आपको कॉमन्स के उत्तर को सही के रूप में चिह्नित करना चाहिए। :) – accordionfolder