Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android - 單例模式(singleton)的使用

Android - 單例模式(singleton)的使用

編輯:關於Android編程

單例模式(singleton)的使用

 

 

 

單例(singleton)是特殊的Java類,在創建實例時,一個類僅允許創建一個實例。

 

應用能夠在內存裡存多久,單例就能存在多久,因此將對象列表保存在單例裡可保持crime數據的一直存在,

不管activity、fragment及它們的生命周期發生什麼變化。

 

要創建單例,需創建一個帶有私有構造方法及get()方法類,其中get()方法返回實例。

如實例已存在,get()方法則直接返回它,如果實例不存在,get()方法會調用構造方法來創建它。

 

如代碼,通過單例模式保存一個唯一數組,使用getCrimes、getCrime方法調用數組。

代碼:

 

package com.chunyu.android.criminalintent;

import android.content.Context;

import java.util.ArrayList;
import java.util.UUID;

/**
 * Created by wangchenlong on 14-10-16.
 */
public class CrimeLab {

    private ArrayList mCrimes;

    private static CrimeLab sCrimeLab;
    private Context mAppContent;

    private CrimeLab(Context appContent) {
        mAppContent = appContent;
        mCrimes = new ArrayList();

        //臨時
        for(int i=0; i<100; ++i) {
            Crime c = new Crime();
            c.setTitle(Crime # + i);
            c.setSolved( i%2 == 0 );
            mCrimes.add(c);
        }

    }

    public static CrimeLab get(Context c) {
        if (sCrimeLab == null)
            sCrimeLab = new CrimeLab(c.getApplicationContext());
        return sCrimeLab;
    }

    public ArrayList getCrimes() {
        return mCrimes;
    }

    public Crime getCrime(UUID id) {
        for (Crime c : mCrimes) {
            if (c.getId().equals(id))
                return c;
        }
        return null;
    }
}

使用方法:

 

 

mCrime = CrimeLab.get(getActivity()).getCrime(crimeId);

先確定單例的Context,在調用getCrime,讀出具體的Crime。

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved