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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

final

class

InputMethodManager

{

static

final

Object

mInstanceSync

=

new

Object();//同步

//內部全局***實例

static

InputMethodManager

mInstance;

//對外api

static

public

InputMethodManager

getInstance(Context

context)

{

return

getInstance(context.getMainLooper());

}

/**

*

內部api,供上面的外部api調用

*

@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;

}

}客戶端調用,比如contextimpl中的getSystemService()方法中如下調用: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))

{

//獲取輸入法管理者***實例

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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論