banner



How To Clear Cache In Android Studio Programmatically

Clear Cache in Android Application programmatically

what is the correct way to clear cache in android Application programmatically. I already using following code but its not look work for me

                              @Override                protected                void                                  onDestroy()                {                // TODO Auto-generated method stub                super.onDestroy();     clearApplicationData(); }                public                void                                  clearApplicationData()                {     File cache = getCacheDir();     File appDir =                new                File(cache.getParent());                if                (appDir.exists()) {                String[] children = appDir.list();                for                (String                s : children) {                if                (!s.equals("lib")) {                 deleteDir(new                File(appDir, s));                 Log.i("EEEEEERRRRRRROOOOOOORRRR",                "**************** File /data/data/APP_PACKAGE/"                + s +                " DELETED *******************");             }         }     } }                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;             }         }     }                return                dir.delete(); }                          

Image from my android phone

Answer #1:

If you are looking for delete cache of your own application then simply delete your cache directory and its all done !

                          public              static              void                              deleteCache(Context context)              {              try              {         File dir = context.getCacheDir();         deleteDir(dir);     }              catch              (Exception e) { e.printStackTrace();} }              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;             }         }              return              dir.delete();     }              else              if(dir!=              null              && dir.isFile()) {              return              dir.delete();     }              else              {              return              false;     } }                      

Answer #2:

Kotlin has an one-liner

                          context              .cacheDir              .deleteRecursively()                      

Answer #3:

The answer from dhams is correct (after having been edited several times), but as the many edits of the code shows, it is difficult to write correct and robust code for deleting a directory (with sub-dirs) yourself. So I strongly suggest using Apache Commons IO, or some other API that does this for you:

            import org.apache              .commons              .io              .FileUtils;  ...  // Delete local cache dir (ignoring any errors): FileUtils.deleteQuietly(context.getCacheDir());                      

PS: Also delete the directory returned by context.getExternalCacheDir() if you use that.

To be able to use Apache Commons IO, add this to your build.gradle file, in the dependencies part:

                          compile              'commons-io:commons-io:2.4'                      

Answer #4:

I think you're supposed to place clearApplicationData() before the super.OnDestroy().

Your app can't process any methods when it has been shut down.

Answer #5:

Try this

                          @Override              protected              void                              onDestroy()              {              // TODO Auto-generated method stub              super.onDestroy();     clearApplicationData(); }              public              void                              clearApplicationData()              {     File cache = getCacheDir();     File appDir =              new              File(cache.getParent());              if              (appDir.exists()) {              String[] children = appDir.list();              for              (String              s : children) {              if              (!s.equals("lib")) {                 deleteDir(new              File(appDir, s));                 Log.i("EEEEEERRRRRROOOOOOORRRR",              "**************** File /data/data/APP_PACKAGE/"              + s +              " DELETED *******************");             }         }     } }              public              static              boolean                              deleteDir(File dir)              {              if              (dir !=              null              && dir.isDirectory()) {              String[] children = dir.list();         int i =              0;              while              (i < children.length) {              boolean              success = deleteDir(new              File(dir, children[i]));              if              (!success) {              return              false;             }             i++;         }     }      assert dir !=              null;              return              dir.delete(); }                      

Answer #6:

I am not sure but I sow this code too. this cod will work faster and in my mind its simple too. just get your apps cache directory and delete all files in directory

                          public              boolean clearCache() {              try              {              // create an array object of File type for referencing of cache files                            File[] files = getBaseContext().getCacheDir().listFiles();              // use a for etch loop to delete files one by one              for              (File file : files) {              /* you can use just [ file.delete() ] function of class File               * or use if for being sure if file deleted               * here if file dose not delete returns false and condition will               * will be true and it ends operation of function by return                * false then we will find that all files are not delete               */              if              (!file.delete()) {              return              false;              // not success              }         }              // if for loop completes and process not ended it returns true                            return              true;              // success of deleting files              }              catch              (Exception e) {}              // try stops deleting cache files              return              false;              // not success                            }                      

It gets all of cache files in File array by getBaseContext().getCacheDir().listFiles() and then deletes one by one in a loop by file.delet() method

Answer #7:

Put this code in onStop() method of MainActivity

                          @Override              protected              void                              onStop()              {              super.onStop();     AppUtils.deleteCache(getApplicationContext()); }                      
                          public                              class                AppUtils              {              public              static              void                              deleteCache(Context context)              {              try              {             File dir = context.getCacheDir();             deleteDir(dir);         }              catch              (Exception e) {}     }              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;                 }             }              return              dir.delete();         }              else              if(dir!=              null              && dir.isFile()) {              return              dir.delete();         }              else              {              return              false;         }     } }                      

Answer #8:

If you're using kotlin, then:

                          context              .cacheDir              .deleteRecursively()                      

Answer #9:

This code will remove your whole cache of the application, You can check on app setting and open the app info and check the size of cache. Once you will use this code your cache size will be 0KB . So it and enjoy the clean cache.

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

How To Clear Cache In Android Studio Programmatically

Source: https://www.py4u.net/discuss/604949

Posted by: boyerfrous1999.blogspot.com

0 Response to "How To Clear Cache In Android Studio Programmatically"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel