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

7 篇文章 0 订阅

1.  在res下xml中描述设置的界面        preferences.xml

<?xml version="1.0" encoding="UTF-8"?>
<PreferenceScreen
	xmlns:android="http://schemas.android.com/apk/res/android">
	
	<PreferenceCategory
		android:title="缓存设置">
		<CheckBoxPreference
			android:title="显示应用图标"
			android:key="isShowIcon"
			android:summary="是否在列表中显示图标"
			android:defaultValue="true" />
		<CheckBoxPreference
			android:title="保存应用图标"
			android:key="isSaveIcon"
			android:summary="是否将应用图标保存到SD卡中"
			android:defaultValue="true" />
		
	</PreferenceCategory>
	
	<PreferenceCategory
		android:title="缓存清理">
		<PreferenceScreen
			android: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);
		}

		@Override
		public 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 implements
		OnPreferenceChangeListener, OnPreferenceClickListener {

	private ProgressDialog dialog;

	private PreferenceScreen preferenceScreen;

	@Override
	public 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);
	}

	@Override
	public 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() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
						cleanData();
					}
				});
		builder.setNegativeButton("取消",
				new android.content.DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
					}
				});
		builder.create().show();
	}

	private Handler handler = new Handler() {
		@Override
		public 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() {

			@Override
			public 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();
	}

	@Override
	public boolean onPreferenceChange(Preference preference, Object newValue) {
		return false;
	}
}



		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值