Log工具类
object LogUtil {
fun logDebug(msg: Any?) {
Log.d(buildTag(), buildMsg(msg))
}
private fun buildTag(): String {
buildString {
append("TAGZ")
val stack = Throwable().fillInStackTrace().stackTrace
for (item in stack) {
if (item.isNativeMethod) {
continue
}
if (item.className == LogUtil.javaClass.name) {
continue
}
if (item.className == Thread::class.java.name) {
continue
}
append("(")
append(item.fileName)
append(":")
append(item.lineNumber)
append(")")
append("[")
append(Thread.currentThread().name)
append("]")
return toString()
}
}
return "TAG"
}
private fun buildMsg(msg: Any?): String {
buildString {
appendLine(" ")
appendLine("╔═══════════════════════════════════════════════════════════════════════════════════════════════════")
append("║ ")
appendLine(msg)
appendLine("╚═══════════════════════════════════════════════════════════════════════════════════════════════════")
return toString()
}
}
}
SP存储
object SPUtil {
private val sp = BaseApplication.INSTANCE.getSharedPreferences(
"MapTraceDemo",
Context.MODE_PRIVATE
)
fun put(key: String, value: String?) {
sp.edit().putString(key, value).apply()
}
fun put(key: String, value: Int) {
sp.edit().putInt(key, value).apply()
}
fun put(key: String, value: Set<String?>) {
sp.edit().putStringSet(key, value).apply()
}
fun put(key: String, value: Boolean) {
sp.edit().putBoolean(key, value).apply()
}
fun putObject(key: String, obj: Any) {
val bao = ByteArrayOutputStream()
val oos = ObjectOutputStream(bao)
oos.writeObject(obj)
val objectStr = String(Base64.encode(bao.toByteArray(), Base64.DEFAULT))
bao.close()
oos.close()
put(key, objectStr)
}
fun getString(key: String, default: String = ""): String {
return sp.getString(key, default) ?: ""
}
fun getInt(key: String, default: Int = 0): Int {
return sp.getInt(key, default)
}
fun getBoolean(key: String, default: Boolean = false): Boolean {
return sp.getBoolean(key, default)
}
fun getStringSet(key: String): Set<String?>? {
return sp.getStringSet(key, emptySet<String>())
}
fun getObject(key: String): Any? {
val base64 = getString(key)
if (base64.isEmpty()) {
return null
}
val objBytes = Base64.decode(base64.toByteArray(), Base64.DEFAULT)
val bai = ByteArrayInputStream(objBytes)
val ois = ObjectInputStream(bai)
val obj = ois.readObject()
bai.close()
ois.close()
return obj
}
fun clear() {
sp.edit().clear().apply()
}
fun remove(key: String) {
sp.edit().remove(key).apply()
}
}