相关文章推荐
买醉的香蕉  ·  Android中Surface+MediaP ...·  12 月前    · 
道上混的豌豆  ·  在C++/Python/Java/Objec ...·  1 年前    · 
用户在使用我们所研发的App的时候,通常都会遇到如下的问题:

使用过程中可能会遇到应用程序或软件更新失败,因为用户的智能手机存储空间不足。 由于应用程序崩溃和其他问题,用户的数字设备运行速度比以前慢。 所有这些问题都是由于用户的存储空间不足造成的。 实际上,即使用户购买了128 GB或256 GB的手机,删除垃圾文件仍然很重要 在Android手机上 清除缓存 定期。

因此,本文给大家分享一下,在研发app中常用的清除缓存数据和应用数据的功能如何实现?

缓存数据的含义是什么?

缓存数据表示应用或网站存储在Android手机或平板电脑中的所有媒体文件。 因此,每次使用应用程序时,它都会自动保存包括文件,图像等在内的缓存数据。 因此,下次加载此应用程序时,用户可以快速,顺利地获取目标信息。 如果仍然不知道缓存数据是什么,可以参考这些常见问题。

  1. Android上的“清除应用程序数据”和“清除应用程序缓存”有什么区别?
    缓存数据是Android设备的临时存储区域。 它可以加快用户的操作系统运行速度。 因此,当用户清除缓存Android时,用户几乎没有风险,而应用数据则扮演更重要的角色。 清除Android手机上的应用数据后,用户之前的所有数据和内容都将被删除。 因此,用户的应用将重置为其默认状态。

  2. 可以清除Android上的所有缓存应用数据吗?
    是。 清除Android上的缓存数据并不重要。 用户只需删除存储在内部存储空间中的临时文件即可。 可以在需要时自动从Internet加载缓存数据。 清除Android手机上的缓存后,用户不会丢失任何重要或敏感数据。

  3. 清除手机缓存后会发生什么?
    用户可以有效地释放Android手机或平板电脑上的更多内存空间。 此外,它可以改善电池寿命,加快数字设备的速度并解决一些Android系统问题,例如 Android被困在Odin模式中,下载模式,软砖等

如何在Android中清除缓存?

这里直接给大家展示一下,应用程序中的清除缓存功能,如下图:

如何通过程序的方式实现如上图的功能?
* @author 拉莫帅 * @date 2022 /3/18 * @address * @Desc 本地存储工具类 public class CacheDataManager { * 获取缓存大小 * @param context * @return * @throws Exception public static String getTotalCacheSize ( Context context ) throws Exception { long cacheSize = getFolderSize ( context.getCacheDir ( )) ; if ( Environment.getExternalStorageState ( ) .equals ( Environment.MEDIA_MOUNTED )) { cacheSize += getFolderSize ( context.getExternalCacheDir ( )) ; return getFormatSize ( cacheSize ) ; * 清除缓存 * @param context public static void clearAllCache ( Context context ) { deleteDir ( context.getCacheDir ( )) ; if ( Environment.getExternalStorageState ( ) .equals ( Environment.MEDIA_MOUNTED )) { deleteDir ( context.getExternalCacheDir ( )) ; private 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 ( ) ; public static long getFolderSize ( File file ) throws Exception { long size = 0 ; try { File [ ] fileList = file.listFiles ( ) ; for ( int i = 0 ; i < fileList.length ; i++ ) { // 如果下面还有文件 if ( fileList [ i ] .isDirectory ( )) { size = size + getFolderSize ( fileList [ i ] ) ; } else { size = size + fileList [ i ] .length ( ) ; } catch ( Exception e ) { e.printStackTrace ( ) ; return size ; * 格式化单位 * @param size public static String getFormatSize ( double size ) { double kiloByte = size / 1024 ; if ( kiloByte < 1 ) { return size + "Byte" ; double megaByte = kiloByte / 1024 ; if ( megaByte < 1 ) { BigDecimal result1 = new BigDecimal ( Double.toString ( kiloByte )) ; return result1.setScale ( 2 , BigDecimal.ROUND_HALF_UP ) .toPlainString ( ) + "KB" ; double gigaByte = megaByte / 1024 ; if ( gigaByte < 1 ) { BigDecimal result2 = new BigDecimal ( Double.toString ( megaByte )) ; return result2.setScale ( 2 , BigDecimal.ROUND_HALF_UP ) .toPlainString ( ) + "MB" ; double teraBytes = gigaByte / 1024 ; if ( teraBytes < 1 ) { BigDecimal result3 = new BigDecimal ( Double.toString ( gigaByte )) ; return result3.setScale ( 2 , BigDecimal.ROUND_HALF_UP ) .toPlainString ( ) + "GB" ; BigDecimal result4 = new BigDecimal ( teraBytes ) ; return result4.setScale ( 2 , BigDecimal.ROUND_HALF_UP ) .toPlainString ( ) + "TB" ;
SettingActivity中实现初始化缓存大小,并清除缓存

1.首先初始化布局,获取缓存大小

2.清除缓存

* 创建Handler * 接收消息 @SuppressLint ( "HandlerLeak" ) private Handler handler = new Handler ( ) { public void handleMessage ( android.os.Message msg ) { switch ( msg.what ) { case 0 : Toast.makeText ( SettingActivity.this, "清理完成" , Toast.LENGTH_SHORT ) .show ( ) ; try { canch.setText ( CacheDataManager.getTotalCacheSize ( SettingActivity.this )) ; } catch ( Exception e ) { e.printStackTrace ( ) ; * 创建内部类,清除缓存 class clearCache implements Runnable { @Override public void run ( ) { try { CacheDataManager.clearAllCache ( SettingActivity.this ) ; Thread.sleep ( 1000 ) ; if ( CacheDataManager.getTotalCacheSize ( SettingActivity.this ) .startsWith ( "0" )) { handler.sendEmptyMessage ( 0 ) ; } catch ( Exception e ) { return ; Clean Project ![在这里插入图片描述](https://img-blog.csdn.net/20181014182306599?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dkZWVy/font/5a6L5L2T/fon... 其实 清理 缓存 是个挺没必要的工作,Glide 等组件进行 缓存 的主要目的也在于避免重复资源的加载加快 app 的界面呈现速度,但不可避免的可能因为用户需要或者出现 缓存 bug 导致界面无法正常显示等情况需要 清理 app 缓存 ,即便系统本身自带了 缓存 清理 功能 (应用设置- app - 存储和 缓存 - 清除 缓存 )但毕竟有些上手门槛且各家厂商操作系统操作逻辑各异不如自己做一个 清除 功能 在 app 内了,通过上述代码即可完成 缓存 大小估算和 清理 流程,如有其他 常用 组件的 清理 操作方法也欢迎在评论区补充。 系统文件(注:这个是系统的文件系统,不允许修改的) 内置SD卡(注:现在的手机基本上都有,就是我们所谓的ROM,是不可以移除的,RAM是我们手机的运行内存) 外置SD卡(注:这个就是我们的SD卡了,可以移除) 我们的应用 程序 一般会产生以下几种类型的数据: - file-普通的文件存储 - database-数据库文件(.db文件) - sharedPreference-配置数据(.xml文件) Android 手机 缓存 清理 步骤1.获取手机所有app 缓存 2. 清理 缓存 3.获取所有app 缓存 (检查第二步是否成功)代码package com.pythoncat.clearcache;import android .content.pm.IPackageDataObserver;import android .content.pm.IPackageStatsObserver;import androi... 在 Android 8.0及以上版本中,使用PackageManager的deleteApplicationCacheFiles()方法来删除应用的 缓存 数据。而在 Android 8.0以下的版本中,我们通过递归删除应用 缓存 目录下的所有文件来实现 清理 缓存 数据的 功能 。在 Android 开发 中, 清理 应用 缓存 数据是一个常见的需求。我们使用了不同的逻辑来处理 Android 8.0及以上版本和 Android 8.0以下版本的情况,并提供了相关的源代码示例。通过 清理 应用的 缓存 数据,可以提高应用的性能并释放设备的存储空间。 主要调用方法,这两个方法都是不能被第三方应用调用的方法,必须是系统级的应用,且有系统的签名,第三方只能用反射的方法调用。这两个方法要传入一个aidl服务,来回调通知数据是否 清除 成功。将此aidl文件复制到项目aidl文件夹下,注意包名保持一致。 android 清理 缓存 实现,供大家参考,具体内容如下一. 清理 缓存 首先要搞清楚 清理 哪些东西1、app本身的 功能 比如录像,录音,更新都会产生文件,需要 清理 2、app的默认 缓存 地址cache二. 搞清楚要 清理 的文件夹位置1、首先app自身的 功能 就要看自己把它放在了什么位置2、默认 缓存 地址:getactivity().getexternalcachedir();这个位置是在storage/emulat... android 清理 缓存 实现,供大家参考,具体内容如下一. 清理 缓存 首先要搞清楚 清理 哪些东西1、app本身的 功能 比如录像,录音,更新都会产生文件,需要 清理 2、app的默认 缓存 地址cache二. 搞清楚要 清理 的文件夹位置1、首先app自身的 功能 就要看自己把它放在了什么位置2、默认 缓存 地址:getActivity().getExternalCacheDir();这个位置是在storage/emulat... 最近在做appStore时,涉及到一个第三方app下载视频后将车机存储撑爆的问题,从而影响到我们车机自带的app使用,问题很是严重,于是就需要提供 缓存 清理 以及垃圾 清理 功能 ,当用户使用第三方app时,存储空间达到一定量的时候会提示用户去 清理 ,否则不允许使用第三方app。 缓存 获取获取各个应用 程序 缓存 大小,可以通过使用PackageManager.getPackageSizeInfo方法来获取,但是它 * @throws Exception public static String getTotalCacheSize(Context context) throws Exception { //本机 缓存 文件夹 long cacheSize = getFold 在开始 清除 WebView 缓存 之前,我们首先需要检查设备的网络连接状态。在 Android 应用 开发 中,WebView是一个强大的工具,可以在应用中展示网页内容。然而,有时候我们需要在WebView中 清除 缓存 ,以确保最新的内容能够正确地显示出来。这样,我们就完成了 Android WebView的 缓存 清理 功能 的实现。通过检查网络连接状态、创建WebView实例、 清除 缓存 以及重新加载网页内容,我们可以确保WebView中显示的内容是最新的。接下来,我们需要创建一个WebView实例,并加载需要显示的网页内容。 APP项目中,一般会自带计算 缓存 的大小,然后点击确定清空 缓存 。虽然 Android 提供了,查询的方法和 清理 的方法,但是封装一下还是好的。获取 缓存 大小 //Context.getExternalFilesDir() –> SDCard/ Android /data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据 //Context.getExternalCacheDir() –&...