设置界面以及清理缓存的实现

来源:互联网 发布: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
原创粉丝点击