samsung nada miscelaneos memoria liberar interno interna espacio cómo como celular borrar almacenamiento android

android - nada - Cómo borrar los datos de la aplicación mediante programación



liberar espacio almacenamiento interno android (11)

¿Cuál es la forma recomendada de hacerlo en forma programática?

La única opción posible es ejecutar el comando ADB adb shell pm clear package antes de la prueba. El mayor problema es que es una especie de dolor de cabeza que combina la ejecución de pruebas y comandos de shell.

Sin embargo, nosotros (en Mediafe) presentamos una solución que puede funcionar para usted en un dispositivo sin raíz habitual. Todo lo que necesitas hacer es agregar una anotación. Todo lo demás se hace ejecutando script bash simple.

Simplemente agregue la anotación @ClearData antes de que CUALQUIERA de sus pruebas y tada 🎉, el comando de borrado ADB se ejecute antes de la ejecución de la prueba.

Este es un ejemplo de tal prueba:

@Test @ClearData public void someTest() { // your test }

La idea es la siguiente

  1. Lea todas las pruebas usando adb shell am instrument -e log true
  2. Construya el plan de ejecución analizando el resultado de (1)
  3. Ejecute el plan de ejecución línea por línea

Usando la misma idea, estas son todas las opciones que puede apoyar fácilmente:

  • Borrar datos
  • Borrar barra de notificaciones
  • Parametrizar
  • Filtrar y ejecutar por etiquetas

Use solo anotaciones. Me gusta esto:

@Test @ClearData @Tags(tags = {"sanity", "medium"}) @Parameterized.Repeat(count = 3) public void myTest() throws Exception { String param = params[index]; // ... }

¡Prima! 🎁 Por cada prueba fallida:

  • Recoger Logcat + stacktrace
  • Grabar video (mp4)
  • Dump DB (sqlite)
  • Vuelca las preferencias compartidas predeterminadas (xml)
  • Recoge archivos dumpsys como: batería, netstats y otros.

En general, es fácil agregar más opciones, ya que las pruebas se ejecutan una por una desde el script bash en lugar de la tarea gradle.

📗 La publicación completa del blog : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8

📘 El código fuente con ejemplos : https://github.com/medisafe/run-android-tests

Espero que esto responda la pregunta de 6 años;)

Estoy desarrollando pruebas automatizadas para una aplicación de Android (usando Robotium). Para garantizar la consistencia y confiabilidad de las pruebas, me gustaría comenzar cada prueba con estado limpio (de la aplicación bajo prueba). Para hacerlo, necesito borrar los datos de la aplicación. Esto se puede hacer manualmente en Configuración / Aplicaciones / Administrar aplicaciones / [Mi aplicación] / Borrar datos

¿Cuál es la forma recomendada de hacerlo en forma programática?


Desde la API 19, es posible llamar a ActivityManager.clearApplicationUserData ().

((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();


Esta solución realmente me ha ayudado:

Al usar debajo de dos métodos, podemos borrar datos programáticamente

public void clearApplicationData() { File cacheDirectory = getCacheDir(); File applicationDirectory = new File(cacheDirectory.getParent()); if (applicationDirectory.exists()) { String[] fileNames = applicationDirectory.list(); for (String fileName : fileNames) { if (!fileName.equals("lib")) { deleteFile(new File(applicationDirectory, fileName)); } } } } public static boolean deleteFile(File file) { boolean deletedAll = true; if (file != null) { if (file.isDirectory()) { String[] children = file.list(); for (int i = 0; i < children.length; i++) { deletedAll = deleteFile(new File(file, children[i])) && deletedAll; } } else { deletedAll = file.delete(); } } return deletedAll; }


La forma más simple de hacer esto es

private void deleteAppData() { try { // clearing app data String packageName = getApplicationContext().getPackageName(); Runtime runtime = Runtime.getRuntime(); runtime.exec("pm clear "+packageName); } catch (Exception e) { e.printStackTrace(); } }

Esto borrará los datos y eliminará tu aplicación de la memoria. Es equivalente a la opción de borrar datos en Configuración -> Administrador de aplicaciones -> Su aplicación -> Borrar datos.

Esto eliminará los datos por completo y forzará el cierre de la aplicación


Puede usar la herramienta del administrador de paquetes para borrar los datos de las aplicaciones instaladas (similar a presionar el botón ''borrar datos'' en la configuración de la aplicación en su dispositivo). Entonces, usando adb podrías hacer:

adb shell pm clear my.wonderful.app.package


Si tiene solo un par de preferencias compartidas para borrar, entonces esta solución es mucho más agradable .

@Override protected void setUp() throws Exception { super.setUp(); Instrumentation instrumentation = getInstrumentation(); SharedPreferences preferences = instrumentation.getTargetContext().getSharedPreferences(...), Context.MODE_PRIVATE); preferences.edit().clear().commit(); solo = new Solo(instrumentation, getActivity()); }


Siguiendo a la respuesta de @ edovino, la forma de borrar todas las preferencias de una aplicación programáticamente sería

private void clearPreferences() { try { // clearing app data Runtime runtime = Runtime.getRuntime(); runtime.exec("pm clear YOUR_APP_PACKAGE_GOES HERE"); } catch (Exception e) { e.printStackTrace(); } }

Advertencia : la aplicación forzará cerca.


Usando Context , podemos borrar archivos específicos de la aplicación como preferencia, archivo de base de datos. He utilizado el código a continuación para la prueba de UI con Espresso.

@Rule public ActivityTestRule<HomeActivity> mActivityRule = new ActivityTestRule<>( HomeActivity.class); public static void clearAppInfo() { Activity mActivity = testRule.getActivity(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity); prefs.edit().clear().commit(); mActivity.deleteDatabase("app_db_name.db"); }


Verifique este código para:

@Override protected void onDestroy() { // closing Entire Application android.os.Process.killProcess(android.os.Process.myPid()); Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); trimCache(this); super.onDestroy(); } public static void trimCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) { // TODO: handle exception } } public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } // <uses-permission // android:name="android.permission.CLEAR_APP_CACHE"></uses-permission> // The directory is now empty so delete it return dir.delete(); }


puede borrar los datos de la aplicación SharedPreferences con esto

Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit();

y para borrar la aplicación db, esta respuesta es correcta -> Borrar la base de datos de la aplicación


si la versión de Android está por encima del kitkat, puedes usar esto también

if (Build.VERSION_CODES.KITKAT <= Build.VERSION.SDK_INT) { ((ActivityManager) context.getSystemService(ACTIVITY_SERVICE)) .clearApplicationUserData(); return; }