Quiero ejecutar diferentes líneas de código para dispositivos Android con diferente rendimiento. Por ejemplo algo como esto:
if (isHighPerformanceDevice()) {
// run code for devices with high performance
} else if (isMediumPerformanceDevice()) {
// run code for devices with medium performance
} else {
// run code for devices with low performance
}
O al menos:
if (isHighPerformanceDevice()) {
// run code for devices with high performance
} else {
// run code for devices with low performance
}
Me pregunto si hay algo Android SDK
que pueda usar o esos métodos deberían implementarse manualmente. Agradecería cualquier orientación al respecto, gracias.
Dispositivos con Android 10 y superior.
Solución del problema
Preferiría que obtuvieras el rendimiento de la unidad usando su RAM.
Para obtener los valores de RAM, simplemente haga lo siguiente:
ActivityManager actManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
assert actManager!= null;
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem;
long availMemory = memInfo.availMem;
long usedMemory = totalMemory - availMemory;
float precentlong = (((float) (availMemory / totalMemory)) * 100);
Aquí obtendrá el tamaño de RAM total, libre y usado. El valor de estos estará en "largo", así que formatéelo para que sea legible por humanos (es decir, en MB/GB). Utilice el siguiente método para hacerlo:
private String floatForm(double d) {
return String.format(java.util.Locale.US, "%.2f", d);
}
private String bytesToHuman(long size) {
long Kb = 1024;
long Mb = Kb * 1024;
long Gb = Mb * 1024;
long Tb = Gb * 1024;
long Pb = Tb * 1024;
long Eb = Pb * 1024;
if (size < Kb) return floatForm(size) + " byte";
if (size >= Kb && size < Mb) return floatForm((double) size / Kb) + " KB";
if (size >= Mb && size < Gb) return floatForm((double) size / Mb) + " MB";
if (size >= Gb && size < Tb) return floatForm((double) size / Gb) + " GB";
if (size >= Tb && size < Pb) return floatForm((double) size / Tb) + " TB";
if (size >= Pb && size < Eb) return floatForm((double) size / Pb) + " Pb";
if (size >= Eb) return floatForm((double) size / Eb) + " Eb";
return "0";
}
Ahora puede personalizar este código según sus necesidades. No puedo decir que 1 Pb de RAM sea de alto o bajo rendimiento en su caso. Depende de lo que haga tu aplicación. eso es lo que tienes que hacer
No hay comentarios.:
Publicar un comentario