- 单例是特殊java类,仅存在一个实例,应用能在内存里存多久单例就能存多久,不用管activity,fragment的生命周期,方便获取
两个要素:私有构造方法,get()方法
CrimeLab单例
public class CrimeLab {
private static CrimeLab sCrimeLab;
public List<Crime> mCrimes;
public static CrimeLab get(Context context)
{
//仅存在一个CrimeLab实例,若无则创建有就直接返回
if(sCrimeLab==null) {
sCrimeLab = new CrimeLab(context);
}
return sCrimeLab;
}
public List<Crime> getCrimes(){
return mCrimes;
}
public Crime getCrime(UUID id){
for(Crime crime:mCrimes){
if(crime.getId().equals(id)){
return crime;
}
}
return null;
}
private CrimeLab(Context context){
mCrimes=new ArrayList<>();
for(int i=0;i<100;++i){
Crime crime=new Crime();
crime.setTitle("Crime#"+i);
crime.setSolved(i%2==0);
mCrimes.add(crime);
}
}
}
- List java有序数组类,可获取,新增,删除元素
常见list实现是ArrayList
推荐在声明时直接使用List接口类型,这样创建或使用时可方便选取别的list实现比如linkedList