Android OS version market share over time | AppBrain
Mobile & Tablet Android Version Market Share Worldwide | StatCounter Global Stats
Oreo(8.0-0.1) の伸びが止まったまま、Pie(9.0)のみが割合を増やし続けている様子。
なぜ、公式は情報公開しないのだろう。
Android OS version market share over time | AppBrain
Mobile & Tablet Android Version Market Share Worldwide | StatCounter Global Stats
Oreo(8.0-0.1) の伸びが止まったまま、Pie(9.0)のみが割合を増やし続けている様子。
なぜ、公式は情報公開しないのだろう。
サムスンの折り畳みスマホGalaxy Foldの実物をようやく触った
折り畳みスマホSamsung Galaxy Fold使用レポート(1日目)
折りたたみスマホ「Galaxy Fold」、発売前に「壊れた」というレビュアー報告多数 - ITmedia NEWS
Samsung、折りたたみスマホ「Galaxy Fold」を発売延期 - PC Watch
iFixit、折りたたみスマホGalaxy Foldをさっそく料理。評価は「驚くほど壊れやすい」
iFixitがGalaxy Foldの分解レポートを公開〜ゴミが入りやすい? - iPhone Mania
手のひらサイズの「Palm Phone」、4月24日発売 - ケータイ Watch
超小型スマホ「Palm Phone」日本上陸 3.3型液晶で手のひら大
バイクや自転車、腕にも装着できる超小型スマホ「Palm Phone」 - AV Watch
小さいスマホを探している人あつまれー! 「Palm」がSIMフリーで日本上陸 | ギズモード・ジャパン
クレジットカードサイズの3.3型スマホ「Palm Phone」、4月24日に国内発売! – すまほん!!
汎用性のある使えるシングルトン、
どのように書いてますか?
class Singleton private constructor() {
// getInstance() ???
}
ここから、どんな getInstance() を?
いくつか。
fun getInstance(): Singleton {
synchronized(this) {
if(INSTANCE == null){
INSTANCE = Singleton()
}
return INSTANCE!!
}
}
companion object {
private var INSTANCE: Singleton ? = null
fun getInstance(): Singleton {
if(INSTANCE == null){
INSTANCE = Singleton()
}
return INSTANCE!!
}
}
companion object {
val INSTANCE = Singleton()
fun getInstance(): Singleton {
return INSTANCE
}
}
@Volatile private var INSTANCE: Singleton ? = null
fun getInstance(): Singleton {
if(INSTANCE == null){
synchronized(this) {
INSTANCE = Singleton()
}
}
return INSTANCE!!
}
companion object {
@Volatile private var INSTANCE: Singleton ? = null
fun getInstance(): Singleton {
return INSTANCE?: synchronized(this){
Singleton().also {
INSTANCE = it
}
}
}
}
Singleton Pattern — What you might be doing wrong! – Hacker Noon
Googleの人はこう書いてます。
class CheeseRepository(
private val api: CheeseApi,
private val db: CheeseDatabase,
private val executor: Executor
) {
companion object {
private const val PAGE_SIZE = 30
private var instance: CheeseRepository? = null
fun getInstance(context: Context) = instance ?: synchronized(this) {
instance ?: CheeseRepository(
CheeseApi(),
Room.databaseBuilder(context, CheeseDatabase::class.java, "cheese").build(),
Executors.newFixedThreadPool(4)
).also { instance = it }
}
}
CheesePage/CheeseRepository.kt at master · yaraki/CheesePage
あと、Dagger の @Singleton もこのスタイルに変換されますので安心です。覚えておきたい記述です。
なんだか気持ちが悪くても、
なかなか正解が見つけられないこと多くね? 最近。