溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Android中實現(xiàn)服務(wù)定位器

發(fā)布時間:2021-03-31 16:45:48 來源:億速云 閱讀:212 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了怎么在Android中實現(xiàn)服務(wù)定位器,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

引入

repositories { 
  maven { url "https://gitee.com/ezy/repo/raw/android_public/"}
} 
dependencies {
  implementation "me.reezy.jetpack:servicelocator:0.4.0" 
}

API

// 獲取實例
inline fun <reified T> resolve(name: String = T::class.java.name): T?
// 注冊為單例
inline fun <reified T> singleton(name: String = T::class.java.name, crossinline block: () -> T)
// 注冊為工廠
inline fun <reified T> factory(name: String = T::class.java.name, crossinline block: () -> T)

使用

單例,每次resolve獲得的都是同一實例

class SomeService {
  fun doSomething() {
  }
}

// 注冊 
singleton {
  SomeService()
}

// 獲取
val service = resolve<SomeService>()

具名單例

class NamedService(val name: String) {
  fun doSomething() {
  }
}

// 注冊 
singleton("a") {
  NamedService("aaa")
}
singleton("b") {
  NamedService("bbb")
}

// 獲取 
val serviceA = resolve<NamedService>("a")
val serviceB = resolve<NamedService>("b")

工廠,每次resolve都會產(chǎn)生新實例

class SomeService {
  fun doSomething() {
  }
}

// 注冊 
factory {
  SomeService()
}

// 獲取,每次resolve都會產(chǎn)生新實例
val service1 = resolve<SomeService>() 
val service2 = resolve<SomeService>()

具名工廠

class NamedService(val name: String) {
  fun doSomething() {
  }
}

// 注冊 
factory("a") {
  NamedService("aaa")
}
factory("b") {
  NamedService("bbb")
}

// 獲取
// A1 與 A2 是使用同一工廠產(chǎn)生的不同實例
// A1 與 B1 是使用不同工廠產(chǎn)生的不同實例
val serviceA1 = resolve<NamedService>("a")
val serviceA2 = resolve<NamedService>("a")
val serviceB1 = resolve<NamedService>("b")
val serviceB2 = resolve<NamedService>("b")

上述內(nèi)容就是怎么在Android中實現(xiàn)服務(wù)定位器,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI