Es SharedPreferences tiempo de acceso?

Actualmente estoy intentando probar un servicio de terceros para mi aplicación, y necesito identificar cada prueba que se está haciendo en cada ejecución específica.

Dado que más de una prueba puede tener lugar cada vez que ejecuto el testApp, necesito identificar cada prueba.

Lo que pensaba, es almacenar el nombre del dispositivo y construir (no muchos dispositivos aquí), y un índice para cada prueba.

private String getTestId(){ SharedPreferences settings = getPreferences(0); SharedPreferences.Editor editor = settings.edit(); int testNumber = settings.getInt("id", 0); editor.putInt("id", testNumber+1); editor.commit(); String id = Build.DEVICE + Build.VERSION.RELEASE+" - test number: "+testNumber; return id; } 

¿Está ejecutando esta función cada vez que ejecuto una prueba de tiempo de consumo, o puedo hacerlo sin temor a la costa?

Si la respuesta es "tiempo", ¿qué sugeriría que haga cada vez que ejecuto una prueba con el fin de diferenciar cada prueba?

Acerca de SharedPreferences .

SharedPreferences almacena en caché después de la primera carga, por lo que el acceso al disco para cargar datos tomará tiempo, pero una vez. Puedes intentar cargar SharedPreferences desde el principio de tu suite de pruebas para evitar esta penalización.

Para persistir sus datos debe optar por SharedPreferences.Editor.apply () en lugar de SharedPreferences.Editor.commit () ya que appy es asíncrono. Pero por favor lea la documentación sobre ambos para ver cuál se aplica en su caso.

La pregunta ya tiene una respuesta, pero en caso de que otros vengan y busquen un código de ejemplo, reuní esta clase de utilidad para interactuar con SharedPreferences.

Llamar commit () utilizará el método apply () si está disponible, de lo contrario volverá a commit () en los dispositivos más antiguos:

 public class PreferencesUtil { SharedPreferences prefs; SharedPreferences.Editor prefsEditor; private Context mAppContext; private static PreferencesUtil sInstance; private boolean mUseApply; //Set to private private PreferencesUtil(Context context) { mAppContext = context.getApplicationContext(); prefs = PreferenceManager.getDefaultSharedPreferences(mAppContext); prefsEditor = prefs.edit(); //Indicator whether or not the apply() method is available in the current API Version mUseApply = Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD; } public static PreferencesUtil getInstance(Context context) { if (sInstance == null) { sInstance = new PreferencesUtil(context); } return sInstance; } public boolean getBoolean(String key, boolean defValue) { return prefs.getBoolean(key, defValue); } public int getInt(String key, int defValue) { return prefs.getInt(key, defValue); } public String getString(String key, String defValue) { return prefs.getString(key, defValue); } public String getString(String key) { return prefs.getString(key, ""); } public void putBoolean(String key, boolean value) { prefsEditor.putBoolean(key, value); } public void putInt(String key, int value) { prefsEditor.putInt(key, value); } public void putString(String key, String value) { prefsEditor.putString(key, value); } /** * Sincle API Level 9, apply() has been provided for asynchronous operations. * If not available, fallback to the synchronous commit() */ public void commit() { if (mUseApply) //Since API Level 9, apply() is provided for asynchronous operations prefsEditor.apply(); else //Fallback to syncrhonous if not available prefsEditor.commit(); } } 

He notado que cuando se utilizan métodos como putInt() la primera vez para una clave específica que puede tomar una cantidad significativa de tiempo. Además, debe ser equivalente a cualquier otra forma de escribir en un archivo.

  • ¿Por qué Android Studio se está ralentizando al editar el archivo xml o cambiar el diseño?
  • ¿Es crucial para el rendimiento tener ViewHolder como estática en un patrón de ViewHolder?
  • ¿Por qué Google utiliza Canvas en la vista de la lista de conversaciones de aplicaciones de Gmail?
  • ¿Qué debo usar para un mejor rendimiento, nueve parches o un recurso xml extraíble?
  • rendimiento de tablelayout ultra-lento
  • ArrayAdapter de Listview Arregla () redibujo muy lento de notificydatasetchanged
  • La instancia del emulador del pan de jengibre es mucho más lenta que Froyo y abajo. ¿Por qué?
  • Responde al teclado mientras se actualiza la interfaz de usuario
  • ¿Por qué el tipo primitivo corto es significativamente más lento que largo o int?
  • Android: ¿Hay alguna manera de acelerar canvas.drawBitmap?
  • Ionic: transiciones lentas en la aplicación android instalada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.