【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)單例模式_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)單例模式_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)單例模式_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)單例模式

這期內(nèi)容當(dāng)中在下將會給大家?guī)碛嘘P(guān)Android中怎么實(shí)現(xiàn)單例模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。1.意圖保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。熱門詞匯:單例

***私有構(gòu)造2.結(jié)構(gòu)android中有很多系統(tǒng)級別的全局變量,如時間,輸入法,賬戶,狀態(tài)欄等等,android中對這些都直接或者有些間接用到了單例模式。以輸入法為例,把上圖修改為實(shí)際情況:非常的簡單,但是有一點(diǎn),從上面我們也看到了synchronized關(guān)鍵字,在多線程的環(huán)境下,單例模式為了保證自己實(shí)例數(shù)量的***,必然會做并發(fā)控制。類似這種線程安全的單例,跨進(jìn)程的單例,參數(shù)化的單例等等的情況,確實(shí)超出本文的范圍,而且都涉及到很多東西,是一個很大的話題,不好展開。3.代碼:public

final

class

InputMethodManager

{

static

final

Object

mInstanceSync

=

new

Object();//同步

//內(nèi)部全局***實(shí)例

static

InputMethodManager

mInstance;

//對外api

static

public

InputMethodManager

getInstance(Context

context)

{

return

getInstance(context.getMainLooper());

}

/**

*

內(nèi)部api,供上面的外部api調(diào)用

*

@hide

系統(tǒng)隱藏的api

*/

static

public

InputMethodManager

getInstance(Looper

mainLooper)

{

synchronized

(mInstanceSync)

{

if

(mInstance

!=

null)

{

return

mInstance;

}

IBinder

b

=

ServiceManager.getService(Context.INPUT_METHOD_SERVICE);

IInputMethodManager

service

=

IInputMethodManager.Stub.asInterface(b);

mInstance

=

new

InputMethodManager(service,

mainLooper);

}

return

mInstance;

}

}客戶端調(diào)用,比如contextimpl中的getSystemService()方法中如下調(diào)用:class

ContextImpl

extends

Context{

@Override

public

Object

getSystemService(String

name)

{

if

(WINDOW_SERVICE.equals(name))

{

//...

...

省略下面n個if,else

if

}

else

if

(INPUT_METHOD_SERVICE.equals(name))

{

//獲取輸入法管理者***實(shí)例

return

InputMethodManager.getInstance(this);

}

else

if

(KEYGUARD_SERVICE.equals(name))

{

//...

...

省略下面n個if,else

if

}

else

if

(ACCESSIBILITY_SERVICE.equals(name))

{

//又見單例,無處不在

return

AccessibilityManager.getInstance(this);

}

else

if

(LOCATION_SERVICE.equals(name))

{

//...

...

省略下面n個if,else

if

}

else

if

(NFC_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論