मैं सैमसंग गैलेक्सी टैब जीटी-पी 1000 से कई सेंसर पढ़ने की कोशिश कर रहा हूं और ऐसा लगता है कि मैंने उपयोग किए गए एप्लिकेशन के काफी सीपीयू को काफी बुरी तरह से दबाया है।एंड्रॉइड सेंसर सीपीयू उपयोग
एक परीक्षण के रूप में, मैं एक छोटी प्रोग्राम है जो Accelerometer सेंसर के लिए SensorEventListener लागू करता है बनाया है, लेकिन सेंसर रीडिंग के साथ कुछ नहीं करता है:
public class SensorTestActivity extends Activity implements SensorEventListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SensorManager oSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
oSensorManager.registerListener(this, oSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
}
}
यह 10% लगातार CPU उपयोग में परिणाम है, जबकि मैं डिबगिंग कर रहा हूँ (यानी मेरा डिवाइस मेरे पीसी में प्लग है) और 5% उपयोग करते समय मैं नहीं हूं। यदि मैं SENSOR_DELAY_FASTEST का उपयोग करता हूं, तो मैं स्कीयरॉकेट को निरंतर 30% तक करता हूं जबकि मैं डिबगिंग कर रहा हूं और 20% जबकि मैं नहीं हूं।
जब मैं एकाधिक सेंसर का उपयोग करना चाहता हूं, तो यह एक बड़ी समस्या पैदा करता है, क्योंकि उनके पास उच्च CPU उपयोग होता है और यह बिना किसी डेटा प्रोसेसिंग के होता है। मैंने एंड्रॉइड मार्केट से कम्पास एप्लिकेशन का उपयोग किया है और उनमें से कोई भी सीपीयू के 5% से अधिक समय का उपयोग नहीं करता है, इसलिए मुझे लगता है कि मुझे कुछ स्पष्ट रूप से स्पष्ट याद आ रही है, लेकिन किसी और को एक ही समस्या नहीं मिल रही है ।
मैंने इस एप्लिकेशन के लिए मैनिफेस्ट फ़ाइल या लेआउट संपादित नहीं किया है - यह एक्लिप्स द्वारा बनाया गया डिफ़ॉल्ट टेम्पलेट है और मैंने सेंसर जोड़ा है।
अद्यतन: CPU उपयोग पढ़ने की मेरी विधि त्रुटिपूर्ण है, क्योंकि मैं इसे मापने के लिए कार्य प्रबंधक का उपयोग कर रहा था। मेरा एप्लिकेशन चालू होने पर सेंसर को रोक नहीं रहा है जब कार्य प्रबंधक खुलता है, जबकि अधिकांश अन्य अनुप्रयोग ऐसा करेंगे।
मैं सीपीयू उपयोग के बारे में अपने बयान के साथ काफी मूर्ख था - मैंने टास्क मैनेजर में उपयोग को माप दिया, यह भूलकर कि अधिकांश एप्लिकेशन सेंसर को पार करेंगे जब मैं ऐसा करता हूं और इसलिए वास्तव में एक छोटा सा पढ़ना देता हूं। दूसरी तरफ मेरे आवेदन ने ओवरराइड ऑन पॉज़ विधि में सेंसर को नहीं रोका था। शायद इसे हल करने का सबसे अच्छा तरीका है अपनी खुद की कस्टम देरी या किसी एक को सेट करने का प्रयास करना, क्योंकि मैग्निमीटर या जीरोस्कोप जैसे अधिक सेंसर जोड़ना वास्तव में चीजों को बदसूरत कर सकता है। – Namdrater
@ user1021922: आप कस्टम देरी नहीं कर सकते, क्षमा करें। – CommonsWare