设置界面以及清理缓存的实现
来源:互联网 发布:mac npm安装gulp 编辑:程序博客网 时间:2024/06/05 19:04
1. 在res下xml中描述设置的界面 preferences.xml
<?xml version="1.0" encoding="UTF-8"?><PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:title="缓存设置"><CheckBoxPreferenceandroid:title="显示应用图标"android:key="isShowIcon"android:summary="是否在列表中显示图标"android:defaultValue="true" /><CheckBoxPreferenceandroid:title="保存应用图标"android:key="isSaveIcon"android:summary="是否将应用图标保存到SD卡中"android:defaultValue="true" /></PreferenceCategory><PreferenceCategoryandroid:title="缓存清理"><PreferenceScreenandroid:title="缓存清理"android:key="cleanData"android:summary="清理安装包" /></PreferenceCategory></PreferenceScreen>
二、简单介绍下,SQLite在Android中的应用
① 先写一个类 DBAdapter.java
② 在DBAdapter这个类中写一个内部类DBHelper ,让其继承SQLiteOpenHelper
③ 在DBAdapter中利用DBHelper 来写执行sql语句的方法
public class DBAdapter {private static final String DATABASE_NAME = "xxx.db";private static final int DBVERSION = 2;private DBHelper dbHelper;private final Context _context;private SQLiteDatabase _db;// 建表语句private static final String DOWNLOAD_SQL = "create table download (_id integer primary key autoincrement, "+ "softId integer, " // 软件ID+ "name text, " // 软件名称+ "_package text, " // 软件包名+ "version text, " // 版本+ "spath text, " // 保存路径+ "durl text, " // 下载路径+ "iurl text, " // 保留信息+ "status integer, " // 状态+ "dsize integer, " // 下载大小+ "ssize text, " // 文字大小+ "size text" // 总大小+ ");";private class DBHelper extends SQLiteOpenHelper {public DBHelper(Context context) { // 上下文,数据库名,游标工厂(null代表使用默认的),版本号super(context, DATABASE_NAME, null, DBVERSION);}@Override public void onCreate(SQLiteDatabase db) { // 如果没有数据表,会执行此方法db.execSQL(DOWNLOAD_SQL);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 如果版本号已更新,会执行此方法db.execSQL("DROP TABLE IF EXISTS download");onCreate(db);}}// 构造方法public DBAdapter(Context context) {_context = context;dbHelper = new DBHelper(_context);_db = dbHelper.getWritableDatabase();}public void execSQL(String sql) {_db.execSQL(sql);}public void execSQL(String sql, Object[] bindArgs) {_db.execSQL(sql, bindArgs);}public long insert(String table, String nullColumnHack, ContentValues values) {return _db.insert(table, nullColumnHack, values);}public Cursor rawQuery(String sql, String[] bindArgs) {return _db.rawQuery(sql, bindArgs);}public void close() {_db.close();}public SQLiteDatabase getDatabase() {return _db;}}
三、回到设置界面的点击事件 ActivitySetting
public class ActivitySetting extends PreferenceActivity implementsOnPreferenceChangeListener, OnPreferenceClickListener {private ProgressDialog dialog;private PreferenceScreen preferenceScreen;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 导入preferences.xml (设置界面的布局文件)addPreferencesFromResource(R.xml.preferences);// 保存数据,使用的是XML文件的名称 如果是要拿到复选框中的值,直接像获得首选项方式里的值一样的拿,(复选框选中了,就会变成true,存放到xml文件中)getPreferenceManager().setSharedPreferencesName(Config.NAME);// 找到要点击的key值 preferenceScreen = (PreferenceScreen) findPreference("cleanData");preferenceScreen.setOnPreferenceClickListener(this);}@Overridepublic boolean onPreferenceClick(Preference preference) {dialog();return true;}/** * 清理缓存对话框 */private void dialog() {AlertDialog.Builder builder = new Builder(ActivitySetting.this);builder.setMessage("确定要清理所有缓存吗?");builder.setTitle("提示");builder.setPositiveButton("确认",new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();cleanData();}});builder.setNegativeButton("取消",new android.content.DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {dialog.dismiss();Toast.makeText(ActivitySetting.this, "清理完毕", Toast.LENGTH_SHORT).show();}};/** * 清理缓存 分为两部分:① 存放在数据库中的 ② 存放在文件夹中的 */private void cleanData() {showDialog(null, "清理中...", null, null, false, null, null);new DBAdapter(this).execSQL("delete from download");new Thread() {@Overridepublic void run() {File file1 = new File(MarketConstants.SDCARD + "icon");if (file1.exists() && file1.isDirectory()) {String[] array1 = file1.list();for (String string : array1) {new File(MarketConstants.SDCARD + "icon/" + string).delete();}}File file2 = new File(MarketConstants.SDCARD + "soft");if (file2.exists() && file2.isDirectory()) {String[] array2 = file2.list();for (String string : array2) {new File(MarketConstants.SDCARD + "soft/" + string).delete();}}handler.sendEmptyMessage(1);}}.start();}/** * 清理缓存进度条 * @param title * @param content * @param okText * @param cancleText * @param cancelable * @param btnCancle * @param btnOk */public void showDialog(String title, String content, String okText,String cancleText, boolean cancelable, OnCancelListener btnCancle,OnClickListener btnOk) {dialog = new ProgressDialog(this);dialog.setTitle(title);dialog.setMessage(content);dialog.setCancelable(cancelable);dialog.show();}@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {return false;}}
0 0
- 设置界面以及清理缓存的实现
- 获取缓存的大小 以及清理缓存
- Android设置界面及Preference使用 + 实现开启自启动 清理缓存 杀进程
- WKWebView的缓存问题以及如何正确清理缓存
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS清理缓存的简单实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发 清理缓存功能的实现
- 如何实现手机缓存清理的功能
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- 98利用反射清理应用程序的缓存以及清理所有应用程序的缓存
- 解读淘宝”搜刮九年夜规矩“,让流量爆棚(新店也可以哦)
- 【LeetCode】Binary Tree Level Order Traversal
- iOS开发系列--打造自己的“美图秀秀”
- linux下裁剪ffmpeg移植到 Android
- Linux开机自动启动脚本方法
- 设置界面以及清理缓存的实现
- WebView适配问题集锦
- 使用regsvr32出现“D:\npdemo.all”加载失败记录
- 四行代码MFC实现电脑关机
- Kinect开发教程三:利用OpenNI进行手势识别
- Android之项目推荐使用的第三方库
- 如何使用glog
- 15款值得学习的小型开源项目
- JavaIO知识梳理