提交 05eec4e6 编写于 作者: J jackjintai

android:新增缓存清理分类

上级 0f7b60cc
package com.didichuxing.doraemonkit.kit.dataclean;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.kit.core.BaseFragment;
import com.didichuxing.doraemonkit.widget.dialog.DialogInfo;
import com.didichuxing.doraemonkit.widget.dialog.SimpleDialogListener;
import com.didichuxing.doraemonkit.kit.core.SettingItem;
import com.didichuxing.doraemonkit.kit.core.SettingItemAdapter;
import com.didichuxing.doraemonkit.widget.recyclerview.DividerItemDecoration;
import com.didichuxing.doraemonkit.widget.titlebar.HomeTitleBar;
import com.didichuxing.doraemonkit.util.DataCleanUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by wanglikun on 2018/11/17.
*/
public class DataCleanFragment extends BaseFragment {
private RecyclerView mSettingList;
private SettingItemAdapter mSettingItemAdapter;
@Override
protected int onRequestLayout() {
return R.layout.dk_fragment_data_clean;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView();
}
private void initView() {
HomeTitleBar titleBar = findViewById(R.id.title_bar);
titleBar.setListener(new HomeTitleBar.OnTitleBarClickListener() {
@Override
public void onRightClick() {
finish();
}
});
mSettingList = findViewById(R.id.setting_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
mSettingList.setLayoutManager(layoutManager);
List<SettingItem> settingItems = new ArrayList<>();
SettingItem settingItem = new SettingItem(R.string.dk_kit_data_clean, R.mipmap.dk_more_icon);
settingItem.rightDesc = DataCleanUtil.getApplicationDataSizeStr(getContext());
settingItems.add(settingItem);
mSettingItemAdapter = new SettingItemAdapter(getContext());
mSettingItemAdapter.setData(settingItems);
mSettingItemAdapter.setOnSettingItemClickListener(new SettingItemAdapter.OnSettingItemClickListener() {
@Override
public void onSettingItemClick(View view, final SettingItem data) {
if (data.desc == R.string.dk_kit_data_clean) {
DialogInfo dialogInfo = new DialogInfo();
dialogInfo.title = getString(R.string.dk_hint);
dialogInfo.desc = getString(R.string.dk_app_data_clean);
dialogInfo.listener = new SimpleDialogListener() {
@Override
public boolean onPositive() {
DataCleanUtil.cleanApplicationData(getContext());
data.rightDesc = DataCleanUtil.getApplicationDataSizeStr(getContext());
mSettingItemAdapter.notifyDataSetChanged();
return true;
}
@Override
public boolean onNegative() {
return true;
}
};
showDialog(dialogInfo);
}
}
});
mSettingList.setAdapter(mSettingItemAdapter);
DividerItemDecoration decoration = new DividerItemDecoration(DividerItemDecoration.VERTICAL);
decoration.setDrawable(getResources().getDrawable(R.drawable.dk_divider));
mSettingList.addItemDecoration(decoration);
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit.kit.dataclean
import android.os.Bundle
import android.os.FileUtils
import android.view.LayoutInflater
import android.view.View
import android.widget.*
import androidx.core.view.children
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.blankj.utilcode.util.PathUtils
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.kit.core.BaseFragment
import com.didichuxing.doraemonkit.kit.core.SettingItem
import com.didichuxing.doraemonkit.kit.core.SettingItemAdapter
import com.didichuxing.doraemonkit.util.DataCleanUtil
import com.didichuxing.doraemonkit.util.DokitUtil
import com.didichuxing.doraemonkit.util.FileUtil
import com.didichuxing.doraemonkit.widget.dialog.DialogInfo
import com.didichuxing.doraemonkit.widget.dialog.SimpleDialogListener
import com.didichuxing.doraemonkit.widget.recyclerview.DividerItemDecoration
import com.didichuxing.doraemonkit.widget.titlebar.HomeTitleBar
import kotlinx.android.synthetic.main.dk_label_text_view.view.*
import java.io.File
import java.util.*
/**
* Created by wanglikun on 2018/11/17.
*/
class DataCleanFragment : BaseFragment() {
private lateinit var mSettingList: RecyclerView
private lateinit var mSettingItemAdapter: SettingItemAdapter
private lateinit var mItemWrap: LinearLayout
private lateinit var mBtnClean: Button
private lateinit var dirs: MutableList<String>
override fun onRequestLayout(): Int {
return R.layout.dk_fragment_data_clean
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
}
private fun initView() {
val titleBar = findViewById<HomeTitleBar>(R.id.title_bar)
titleBar.setListener { finish() }
mSettingList = findViewById(R.id.setting_list)
mItemWrap = findViewById(R.id.item_wrap)
mBtnClean = findViewById(R.id.btn_clean)
dirs = mutableListOf(DokitUtil.getString(R.string.dk_kit_cache_check_all))
val innerDirs = File(PathUtils.getInternalAppDataPath()).listFiles()?.filter { file ->
file.isDirectory
}?.map { file ->
file.name
}?.asIterable()
dirs.addAll(innerDirs!!)
dirs.forEach {
val item: RelativeLayout = LayoutInflater.from(activity).inflate(R.layout.dk_item_data_clean, null) as RelativeLayout
item.findViewById<TextView>(R.id.tv_name).text = it
item.findViewById<Switch>(R.id.switch_btn).isChecked = false
item.setOnClickListener { innerItem ->
val switch = innerItem.findViewById<Switch>(R.id.switch_btn)
val name = innerItem.findViewById<TextView>(R.id.tv_name)
if (name.text == DokitUtil.getString(R.string.dk_kit_cache_check_all)) {
if (switch.isChecked) {
mItemWrap.children.forEach {
it.findViewById<Switch>(R.id.switch_btn).isChecked = false
}
} else {
mItemWrap.children.forEach {
it.findViewById<Switch>(R.id.switch_btn).isChecked = true
}
}
} else {
switch.isChecked = !switch.isChecked
}
}
mItemWrap.addView(item)
}
val layoutManager = LinearLayoutManager(context)
mSettingList.setLayoutManager(layoutManager)
val settingItems: MutableList<SettingItem> = ArrayList()
val settingItem = SettingItem(R.string.dk_kit_data_clean)
settingItem.rightDesc = DataCleanUtil.getApplicationDataSizeStr(context)
settingItems.add(settingItem)
mSettingItemAdapter = SettingItemAdapter(context)
mSettingItemAdapter.setData(settingItems)
mBtnClean.setOnClickListener { view ->
val dialogInfo = DialogInfo()
dialogInfo.title = getString(R.string.dk_hint)
dialogInfo.desc = getString(R.string.dk_app_data_clean)
dialogInfo.listener = object : SimpleDialogListener() {
override fun onPositive(): Boolean {
cleanCache()
mSettingItemAdapter.data[0].rightDesc = DataCleanUtil.getApplicationDataSizeStr(context)
mSettingItemAdapter.notifyDataSetChanged()
return true
}
override fun onNegative(): Boolean {
return true
}
}
showDialog(dialogInfo)
}
mSettingList.setAdapter(mSettingItemAdapter)
val decoration = DividerItemDecoration(DividerItemDecoration.VERTICAL)
decoration.setDrawable(resources.getDrawable(R.drawable.dk_divider))
mSettingList.addItemDecoration(decoration)
}
private fun cleanCache() {
for (index in 1 until mItemWrap.childCount) {
val item = mItemWrap.getChildAt(index)
val name = item.findViewById<TextView>(R.id.tv_name)
val switch = item.findViewById<Switch>(R.id.switch_btn)
if (switch.isChecked) {
val file = File(PathUtils.getInternalAppDataPath() + File.separator + name.text)
if (file.isDirectory) {
FileUtil.deleteDirectory(file)
}
}
}
}
}
\ No newline at end of file
......@@ -6,6 +6,8 @@ import android.content.Context;
import android.os.Environment;
import android.text.format.Formatter;
import com.blankj.utilcode.util.PathUtils;
/**
* Created by wanglikun on 2018/11/17.
*/
......@@ -79,16 +81,16 @@ public class DataCleanUtil {
}
public static long getApplicationDataSize(Context context) {
long size = 0;
// internal cache
size += FileUtil.getDirectorySize(context.getCacheDir());
// databases
size += FileUtil.getDirectorySize(new File(context.getFilesDir().getParent() + "/databases"));
// shared preference
size += FileUtil.getDirectorySize(new File(context.getFilesDir().getParent() + "/shared_prefs"));
// files
size += FileUtil.getDirectorySize(context.getFilesDir());
return size;
// long size = 0;
// // internal cache
// size += FileUtil.getDirectorySize(context.getCacheDir());
// // databases
// size += FileUtil.getDirectorySize(new File(context.getFilesDir().getParent() + "/databases"));
// // shared preference
// size += FileUtil.getDirectorySize(new File(context.getFilesDir().getParent() + "/shared_prefs"));
// // files
// size += FileUtil.getDirectorySize(context.getFilesDir());
return FileUtil.getDirectorySize(new File(PathUtils.getInternalAppDataPath()));
}
public static String getApplicationDataSizeStr(Context context) {
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/dk_color_FFFFFF"
android:orientation="vertical">
<com.didichuxing.doraemonkit.widget.titlebar.HomeTitleBar
android:id="@+id/title_bar"
app:dkTitle="@string/dk_kit_data_clean"
app:dkIcon="@mipmap/dk_close_icon_big"
android:layout_width="match_parent"
android:layout_height="89dp" />
android:layout_height="89dp"
android:layout_alignParentTop="true"
app:dkIcon="@mipmap/dk_close_icon_big"
app:dkTitle="@string/dk_kit_data_clean" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/setting_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:layout_below="@id/title_bar" />
</LinearLayout>
\ No newline at end of file
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/setting_list"
android:scrollbars="vertical">
<LinearLayout
android:id="@+id/item_wrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
<Button
android:id="@+id/btn_clean"
android:layout_width="match_parent"
android:layout_height="@dimen/dk_dp_40"
android:layout_alignParentBottom="true"
android:background="@color/dk_color_0070BB"
android:text="@string/dk_kit_data_clean"
android:textColor="@color/dk_color_FFFFFF"
android:textSize="18sp" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dk_color_FFFFFF"
android:padding="10dp">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/dk_color_333333"
android:textSize="14sp"
tools:text="webview" />
<Switch
android:id="@+id/switch_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:checked="false"
android:clickable="false" />
</RelativeLayout>
\ No newline at end of file
......@@ -141,6 +141,7 @@
<string name="dk_crash_capture_switch">Crash Log Collection Switch</string>
<string name="dk_crash_capture_look">View Crash Log</string>
<string name="dk_crash_capture_clean_data">Clean Crash Cache</string>
<string name="dk_kit_cache_check_all">all check</string>
<string name="dk_crash_capture_summary_title">Crash Log List</string>
<!--大图检测开关-->
......
......@@ -29,6 +29,7 @@
<string name="dk_kit_temporary_close">隐藏</string>
<string name="dk_kit_crash">Crash</string>
<string name="dk_kit_data_clean">清理缓存</string>
<string name="dk_kit_cache_check_all">全选</string>
<string name="dk_kit_db_debug">DBView</string>
<string name="dk_kit_weak_network">模拟弱网</string>
<string name="dk_kit_view_check">控件检查</string>
......
......@@ -29,6 +29,7 @@
<string name="dk_kit_temporary_close">隱藏</string>
<string name="dk_kit_crash">Crash</string>
<string name="dk_kit_data_clean">清理缓存</string>
<string name="dk_kit_cache_check_all">全选</string>
<string name="dk_kit_db_debug">DBView</string>
<string name="dk_kit_weak_network">模擬弱網</string>
<string name="dk_kit_view_check">View 元件檢查</string>
......
......@@ -31,6 +31,7 @@
<string name="dk_kit_temporary_close">隐藏</string>
<string name="dk_kit_crash">Crash</string>
<string name="dk_kit_data_clean">清理缓存</string>
<string name="dk_kit_cache_check_all">全选</string>
<string name="dk_kit_db_debug">DBView</string>
<string name="dk_kit_weak_network">模拟弱网</string>
<string name="dk_kit_setting">设置</string>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册