上文的创建的“陋习”app模型层仅包含一个Crime实例,下面将添加一个包含Crime的列表
app的模型层将新增一个CrimeLab对象,该对象是一个数据集中存储池,用来存储Crime对象。当然也应相应的增加一个CrimeListActivity和CrimeListFragment。
1.更新CriminalIntent的模型层
单例与数据集中存储
在本app中,crime数组对象将存储在一个单例里。单例是特殊的Java类,在创建实例时,一个类仅允许创建一个实例
创建单例(CrimeLab.java):
<span style="font-family:Microsoft YaHei;">package com.example.crimialintent;
import android.content.Context;
/*
* 在本app中,crime数组对象将存储在一个单例里。单例是特殊的Java类,在创建实例时,一个类仅允许创建一个实例
* 应用在内存存在多久,单例就能存在多久
* 要创建单例,须创建一个带有似有构造方法及get()方法的类,其中get()方法返回实例。
*/
public class CrimeLab {
private static CrimeLab sCrimeLab; //s前缀代表静态变量
private Context mAppContext;
private CrimeLab(Context appContext){
mAppContext = appContext;
}
/**
* 注意在此方法中,我们并没有直接将Context参数传给构造方法,以为该context可能是activity或者另一个context对象,在应用整个
* 生命周期中我们无法保证CrimeLab需要用到context,context就一直存在,所以,为了保证单例总是有Context可以使用,可以调用
* getApplicationContext()方法。
*/
public static CrimeLab get(Context c){
if (sCrimeLab == null) {
sCrimeLab = new CrimeLab(c.getApplicationContext());
}
return sCrimeLab;
}
}
</span>