使用ASimpleCache开源缓存框架实现抽签小程序
最近在考虑数据缓存的时候发现了这个ASimpleCache,简单到只需要拷贝一个Java文件,正好最近团队有个活动需要抽签,我就做了一个抽签的小程序。介绍如下。
- 设定足够的签数,每次抽取之后不会再出现
- 将已经抽签的结果进行缓存,保证下次重启程序的时候不会重新开始抽签
运行效果图:
代码实现思路:
1.通过ACache的对象在缓存中获取值来判断是否为空,如果是空,证明目前没有缓存,直接进行赋值就可以,如果不为空,则操作获取到的数据。
JSONArray array = aCache.getAsJSONArray("list");
if (array != null) {
for (int i = 0; i < array.length(); i++) {
try {
list.add(array.getInt(i));
} catch (JSONException e) {
e.printStackTrace();
}
}
} else {
for (int i = 0; i < number_all; i++) {
list.add(i);
}
}
2.当抽签完成之后,要把抽到的数据从list中删除,并且把当前的数据进行缓存。
list.remove(list.get(tag));
JSONArray array = new JSONArray();
for (int i = 0; i < list.size(); i++) {
array.put(list.get(i));
}
aCache.put("list", array);
主要就是这两个点。因为我这还加了个筛选耗时的操作,所以用Thread和Handler来进行线程和UI更新的操作。
项目的详细代码如下:如果还有下载ACache.java的话,请点击这里 ,新手第一次写博客。不喜勿喷。这个小程序当时写的仓促,但是功能还是实现了,仅供参考,有更好的实现思路和建议请留言评论。
xml代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FF4500" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:orientation="horizontal" >
<TextView