1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package com.dolin.zap.entity
- /**
- * 参考[android.os.Message]的享元模式
- * @author #Suyghur.
- * Created on 4/8/21
- */
- class ZapData {
- var level: Level = Level.NONE
- var tag = ""
- var msg: String = ""
- private var next: ZapData? = null
- fun recycle() {
- level = Level.NONE
- tag = ""
- msg = ""
- synchronized(sPoolSync) {
- if (sPoolSize < MAX_POOL_SIZE) {
- next = sPool
- sPool = this
- sPoolSize++
- }
- }
- }
- override fun toString(): String {
- return "ZapData{" +
- "level=" + level.name +
- ", tag='" + tag + '\'' +
- ", msg='" + msg + '\'' +
- '}'
- }
- companion object {
- private val sPoolSync = Any()
- private var sPool: ZapData? = null
- private var sPoolSize = 0
- private const val MAX_POOL_SIZE = 50
- @JvmStatic
- fun obtain(): ZapData {
- synchronized(sPoolSync) {
- if (sPool != null) {
- val data = sPool
- sPool = data!!.next
- data.next = null
- sPoolSize--
- return data
- }
- }
- return ZapData()
- }
- @JvmStatic
- fun obtain(level: Level, tag: String, msg: String): ZapData {
- val data = obtain()
- data.level = level
- data.tag = tag
- data.msg = msg
- return data
- }
- }
- }
|