内存缓存

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/sli_setting_bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<com.example.yikezhong.view.TitleView
    android:id="@+id/my_setting_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</com.example.yikezhong.view.TitleView>
<RelativeLayout
    android:id="@+id/partOne"
    android:layout_marginTop="@dimen/s10dp"
    android:layout_width="match_parent"
    android:layout_below="@+id/my_setting_title"
    android:background="@color/maintuijian"
    android:layout_height="@dimen/s88dp"
    >
<TextView
    android:id="@+id/text_check"
    android:layout_width="wrap_content"
    android:layout_height="@dimen/s45dp"
    android:textSize="@dimen/s14dp"
    android:textColor="@color/sli_setting_text_color"
    android:gravity="center"
    android:layout_marginLeft="@dimen/s21dp"
    android:text="@string/sli_shezhi_check"/>
    <TextView
        android:id="@+id/text_checknum"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/s45dp"
        android:textSize="14dp"
        android:textColor="@color/sli_setting_text_color"
        android:layout_marginRight="@dimen/s11dp"
        android:text="@string/sli_shezhi_checknum"
        android:gravity="center"
        android:layout_toLeftOf="@+id/img_check"/>

    <ImageView
        android:id="@+id/img_check"
        android:layout_width="@dimen/s21dp"
        android:layout_height="@dimen/s19dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="@dimen/s14dp"
        android:layout_marginTop="@dimen/s12dp"
        android:src="@mipmap/sliding_xiangyoua" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/s3dp"
        android:layout_marginLeft="@dimen/s35dp"
        android:layout_centerVertical="true"
        android:background="@color/sli_setting_bg" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="@dimen/s45dp"
        android:textSize="@dimen/s14dp"
        android:textColor="@color/sli_setting_text_color"
        android:layout_below="@+id/text_check"
        android:gravity="center"
        android:layout_marginLeft="@dimen/s21dp"
        android:text="@string/sli_shezhi_fankui"/>

    <ImageView
        android:id="@+id/img_fankui"
        android:layout_width="@dimen/s21dp"
        android:layout_height="@dimen/s19dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="@dimen/s14dp"
        android:layout_marginBottom="@dimen/s12dp"
        android:src="@mipmap/sliding_xiangyoua" />
</RelativeLayout>
    <RelativeLayout
        android:id="@+id/partTwo"
        android:layout_marginTop="@dimen/s10dp"
        android:layout_width="match_parent"
        android:layout_below="@+id/partOne"
        android:background="@color/maintuijian"
        android:layout_height="@dimen/s88dp"
        >
        <TextView
            android:id="@+id/text_about"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/s45dp"
            android:textSize="14dp"
            android:textColor="@color/sli_setting_text_color"
            android:gravity="center"
            android:layout_marginLeft="@dimen/s21dp"
            android:text="@string/sli_shezhi_about"/>
        <ImageView
            android:id="@+id/img_about"
            android:layout_width="@dimen/s21dp"
            android:layout_height="@dimen/s19dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="@dimen/s14dp"
            android:layout_marginTop="@dimen/s12dp"
            android:src="@mipmap/sliding_xiangyoua" />

        <View
            android:layout_width="match_parent"
            android:layout_height="@dimen/s3dp"
            android:layout_marginLeft="@dimen/s35dp"
            android:layout_centerVertical="true"
            android:background="@color/sli_setting_bg" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="@dimen/s45dp"
            android:textSize="@dimen/s14dp"
            android:textColor="@color/sli_setting_text_color"
            android:layout_below="@+id/text_about"
            android:gravity="center"
            android:layout_marginLeft="@dimen/s21dp"
            android:text="@string/sli_shezhi_cache"/>

        <TextView
            android:id="@+id/text_cachenum"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/s45dp"
            android:layout_alignParentBottom="true"
            android:layout_toLeftOf="@id/img_huancun"
            android:layout_marginRight="@dimen/s11dp"
            android:gravity="center"
            android:text="@string/sli_shezhi_cachenum"
            android:textColor="@color/sli_setting_text_color"
            android:textSize="@dimen/s14dp" />
        <ImageView
            android:id="@+id/img_huancun"
            android:layout_width="@dimen/s21dp"
            android:layout_height="@dimen/s19dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="@dimen/s14dp"
            android:layout_marginBottom="@dimen/s12dp"
            android:src="@mipmap/sliding_xiangyoua" />
    </RelativeLayout>
    <Button
        android:id="@+id/logout"
        android:layout_width="match_parent"
        android:layout_height="@dimen/s45dp"
        android:layout_below="@id/partTwo"
        android:layout_marginTop="@dimen/s19dp"
        android:textColor="@color/maintuijian"
        android:textSize="@dimen/s15dp"
        android:text="@string/sli_shezhi_logout"
        android:background="@drawable/bt_bg2"/>
</RelativeLayout>
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import andr


oid.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.yikezhong.DataCleanManger;
import com.example.yikezhong.R;
import com.example.yikezhong.view.TitleView;
import com.yatoooon.screenadaptation.ScreenAdapterTools;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class SettingActivity extends AppCompatActivity {

    @BindView(R.id.my_setting_title)
    TitleView mySettingTitle;
    @BindView(R.id.text_check)
    TextView textCheck;
    @BindView(R.id.img_check)
    ImageView imgCheck;
    @BindView(R.id.img_fankui)
    ImageView imgFankui;
    @BindView(R.id.partOne)
    RelativeLayout partOne;
    @BindView(R.id.text_about)
    TextView textAbout;
    @BindView(R.id.img_about)
    ImageView imgAbout;
    @BindView(R.id.img_huancun)
    ImageView imgHuancun;
    @BindView(R.id.partTwo)
    RelativeLayout partTwo;
    @BindView(R.id.logout)
    Button logout;
    @BindView(R.id.text_cachenum)
    TextView textCachenum;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);
        ScreenAdapterTools.getInstance().loadView(getWindow().getDecorView());
        ButterKnife.bind(this);
        initData();
    }
    private void initData() {
        //标题栏设置
        mySettingTitle.setTitleName("设置");
        mySettingTitle.setLeftButtonVisibility(false);
        mySettingTitle.setRightButtonVisibility(false);
        mySettingTitle.setLeftLinearlayoutVisibility(true);
        mySettingTitle.setOnTitleListenter(new TitleView.OnTitleListenter() {
            @Override
            public void backToClick(View view) {
                finish();
            }

            @Override
            public void qBackClick(View view) {

            }

            @Override
            public void rightButtonClick(View view) {

            }
        });
        //查看缓存的大小
        String cacheSize = null;
        try {
            cacheSize = DataCleanManger.getTotalCacheSize(SettingActivity.this);
        } catch (Exception e) {
            e.printStackTrace();
        }
        textCachenum.setText(cacheSize);
    }


    @OnClick({R.id.img_check, R.id.img_fankui, R.id.img_about, R.id.img_huancun, R.id.logout})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.img_check:
                Intent checkIntent = new Intent(this, CheckActivity.class);
                startActivity(checkIntent);
                break;
            case R.id.img_fankui:
                Intent funkuiIntent = new Intent(this, FankuiActivity.class);
                startActivity(funkuiIntent);
                break;
            case R.id.img_about:
                Intent aboutIntent = new Intent(this, AboutActivity.class);
                startActivity(aboutIntent);
                break;
            case R.id.img_huancun:
                //清除操作
                DataCleanManger.clearAllCache(SettingActivity.this);
                try {
                    //清除后的操作
                    String size = DataCleanManger.getTotalCacheSize(SettingActivity.this);
                    textCachenum.setText(size);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            case R.id.logout:
                Toast.makeText(this, "退出登录", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

//
缓存的类

import android.content.Context;
import android.os.Environment;

import java.io.File;
import java.math.BigDecimal;

/**
 * author:Created by jiangkerun on 2018/6/29.
 */
/*应用清除数据管理器*/
public class DataCleanManger {
    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);
    }
    // 获取文件
    //Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
    //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
    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;
    }
    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){
            return false;
        }
        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();
    }
    /**
     * 格式化单位
     *
     * @param size
     * @return
     */
    public static String getFormatSize(double size) {
        double kiloByte = size / 1024;
        if (kiloByte < 1) {
//            return size + "Byte";
            return "0K";
        }
        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";
    }
    /** * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * @param context */
    public static void cleanInternalCache(Context context) {
        deleteFilesByDirectory(context.getCacheDir());
    }
    /** * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * * @param context */
    public static void cleanDatabases(Context context) {
        deleteFilesByDirectory(new File("/data/data/"
                + context.getPackageName() + "/databases"));
    }
    /**
     * * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) * * @param
     * context
     */
    public static void cleanSharedPreference(Context context) {
        deleteFilesByDirectory(new File("/data/data/"
                + context.getPackageName() + "/shared_prefs"));
    }
    /** * 按名字清除本应用数据库 * * @param context * @param dbName */
    public static void cleanDatabaseByName(Context context, String dbName) {
        context.deleteDatabase(dbName);
    }
    /** * 清除/data/data/com.xxx.xxx/files下的内容 * * @param context */
    public static void cleanFiles(Context context) {
        deleteFilesByDirectory(context.getFilesDir());
    }
    /**
     * * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) * * @param
     * context
     */
    public static void cleanExternalCache(Context context) {
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            deleteFilesByDirectory(context.getExternalCacheDir());
        }
    }
    /** * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * * @param filePath */
    public static void cleanCustomCache(String filePath) {
        deleteFilesByDirectory(new File(filePath));
    }
    /** * 清除本应用所有的数据 * * @param context * @param filepath */
    public static void cleanApplicationData(Context context, String... filepath) {
        cleanInternalCache(context);
        cleanExternalCache(context);
        cleanDatabases(context);
        cleanSharedPreference(context);
        cleanFiles(context);
        for (String filePath : filepath) {
            cleanCustomCache(filePath);
        }
    }
    /** * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 * * @param directory */
    private static void deleteFilesByDirectory(File directory) {
        if (directory != null && directory.exists() && directory.isDirectory()) {
            for (File item : directory.listFiles()) {
                item.delete();
            }
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值