真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中怎么實現(xiàn)單例模式

這期內(nèi)容當中小編將會給大家?guī)碛嘘PAndroid中怎么實現(xiàn)單例模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、虛擬空間、營銷軟件、網(wǎng)站建設、祿勸網(wǎng)站維護、網(wǎng)站推廣。

1.意圖
保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
熱門詞匯:單例  *** 私有構(gòu)造

2.結(jié)構(gòu)

Android中怎么實現(xiàn)單例模式android中有很多系統(tǒng)級別的全局變量,如時間,輸入法,賬戶,狀態(tài)欄等等,android中對這些都直接或者有些間接用到了單例模式。
以輸入法為例,把上圖修改為實際情況:

Android中怎么實現(xiàn)單例模式
非常的簡單,但是有一點,從上面我們也看到了synchronized關鍵字,在多線程的環(huán)境下,單例模式為了保證自己實例數(shù)量的***,必然會做并發(fā)控制。
類似這種線程安全的單例,跨進程的單例,參數(shù)化的單例等等的情況,確實超出本文的范圍,而且都涉及到很多東西,是一個很大的話題,不好展開。

3. 代碼:

public final class InputMethodManager {      static final Object mInstanceSync = new Object();//同步      //內(nèi)部全局***實例      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)) {              //獲取輸入法管理者***實例              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_SERVICE.equals(name)) {              return getNfcManager();          }          return null;      }  }

上述就是小編為大家分享的Android中怎么實現(xiàn)單例模式了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁題目:Android中怎么實現(xiàn)單例模式
文章路徑:http://weahome.cn/article/jdcsps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部