Uso de la CPU del sensor Android
Estoy tratando de leer varios sensores de un Samsung Galaxy Tab GT-P1000 y que parecen estar hogging la CPU bastante mal en relación con las aplicaciones que he utilizado.
Como prueba, creé un programa corto que implementa SensorEventListener para el sensor Acelerómetro, pero no hace nada con las lecturas del sensor:
- ¿Cómo obtener una mayor precisión de "CPU%" que la del comando TOP?
- ¿Cómo recuperar todo y ejecución de tamaños de aplicación, uso de la CPU mediante programación?
- Cómo obtener uso de la memoria y el uso de la CPU por aplicación?
- ¿Por qué mi aplicación de Android utiliza CPU en segundo plano?
- Phonegap uso de la aplicación android cpu en el fondo
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 } }
Esto se traduce en un 10% de uso constante de la CPU mientras estoy depurando (es decir, mi dispositivo está conectado a mi PC) y un 5% de uso, mientras que no lo estoy. Si utilizo SENSOR_DELAY_FASTEST, el uso sube a 30% constante mientras estoy depurando y 20% mientras no lo estoy.
Esto crea un problema masivo cuando quiero usar varios sensores, porque todos tienen un uso alto de la CPU y eso es sin ningún procesamiento de datos. He utilizado las aplicaciones de Compass del Android Market y ninguna de ellas usa más del 5% de la CPU en un momento dado, así que siento que estoy perdiendo algo evidentemente obvio, pero no puedo encontrar a nadie que tenga el mismo problema .
No he editado el archivo de manifiesto o el diseño para esta aplicación – es la plantilla predeterminada hecha por Eclipse y he añadido el sensor.
UPDATE: Mi método de leer el uso de la CPU es defectuoso, porque estaba utilizando el administrador de tareas para medirlo. Mi aplicación no está deteniendo los sensores usando onPause cuando se abre el gestor de tareas, mientras que la mayoría de las otras aplicaciones lo harían.
- ¿Cómo obtener estadísticas de uso de la CPU en Android?
- Android studio CPU Herramienta de rendimiento de uso-comprensión de la traza
- ¿Cuál es el significado de Incl Tiempo de CPU, Tiempo de CPU Excl, Tiempo de CPU Real Incluso, Tiempo Real de CPU Excl en traceview?
- Descrip "top" en Android
- Al codificar para Android, ¿hay una manera de obtener el uso de la CPU para cada núcleo del dispositivo de forma individual?
Esto se traduce en un 10% de uso constante de la CPU mientras estoy depurando (es decir, mi dispositivo está conectado a mi PC) y un 5% de uso, mientras que no lo estoy. Si utilizo SENSOR_DELAY_FASTEST, el uso sube a 30% constante mientras estoy depurando y 20% mientras no lo estoy.
A continuación, utilice SENSOR_DELAY_UI
o SENSOR_DELAY_NORMAL
, los cuales le actualizarán con menos frecuencia los datos del sensor y deberán consumir menos tiempo de CPU correspondiente.
He utilizado las aplicaciones Compass del Android Market y ninguna de ellas utiliza más del 5% de la CPU en un momento dado
Probablemente no utilicen SENSOR_DELAY_GAME
o SENSOR_DELAY_FASTEST
.
Más allá de eso, los diferentes dispositivos (quizás con diferentes chipsets de sensores) pueden resultar en una utilización diferente de la CPU. Por ejemplo, algunos dispositivos son molesto charla en LogCat – los dispositivos que el registro basado en las lecturas del sensor sería conmensurately más lento.
Además, no sé cómo está midiendo la utilización de la CPU, pero no tengo conocimiento de ningún medio oficialmente compatible para hacer eso. Me centraría en cambio en cosas como la velocidad de fotogramas en su juego o lo que sea que está escribiendo.