Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@panpf
panpf / ViewLifecycle.kt
Last active December 8, 2023 07:36
为 View 提供 Lifecycle 支持
val View.lifecycleOwner: LifecycleOwner
get() {
synchronized(this) {
/*
* After Lifecycle enters the DESTROYED state, its coroutineScope will be canceled and can no longer be used.
* So you must create a new Lifecycle every time onAttachedToWindow
*/
check(ViewCompat.isAttachedToWindow(this)) {
"View.lifecycleOwner can only be called after onAttachedToWindow and before onDetachedFromWindow"
}
@panpf
panpf / settings.gradle.kts
Created June 24, 2019 07:17
gradle local module reference
include(":app", ":router", ":router-annotation", ":router-compiler", ":download", ":app-installer", ":app-packages")
project(":download").projectDir = File("../download/download")
project(":app-installer").projectDir = File("../app-installer/app-installer")
project(":app-packages").projectDir = File("../app-packages/app-packages")
@panpf
panpf / gist:564a2ea910e3f5afb43f7075ac1c6218
Created May 10, 2019 09:34
shell 转义字符串中的双引号
originParams='"hello world"'
originParamsFormatted=`echo ${originParams//'"'/'\"'}` # 输出结果 \"hello world\"
@panpf
panpf / monitor
Last active May 10, 2019 08:41
shell 写一个监控脚本,可执行任意命令,命令执行失败退出码非 0 发送报警邮件
#!/bin/bash
# 如果需要监控指定命令的执行结果,失败时自动发邮件,就只需在最前面用此命令执行即可,例如 monitor echo "hello world"
# 得到当前脚本文件所在的绝对路径
basePath=$(cd `dirname $0`; pwd)
# 执行并记录状态码
# 如果原本参数里有双引号或单引号的话,直接执行 '$@',会失败
# 用 echo "$@" 打印后看不到原本的双引号或单引号,例如 hive -e "select * from test" 就会变成 hive -e select * from test
@panpf
panpf / gist:c11a91b3b996e9c18b0a242e52bdc9c3
Created May 10, 2019 07:43
shell 获取当前脚本文件所在的绝对路径
basePath=$(cd `dirname $0`; pwd)
@panpf
panpf / gist:eb32175e1a1fb94276037a2cabaf2da1
Created May 9, 2019 03:45
shell 格式化当前时间
startTimeFormatted=`date '+%Y-%m-%d %a %H:%M:%S'`
@panpf
panpf / gist:652fab17869b6c332f2b7cdcc3bed968
Created May 9, 2019 03:44
shell 获取当前时间戳(精确到毫秒)代码
startTime=$[$(date +%s%N)/1000000]
@panpf
panpf / time_format.sh
Created May 9, 2019 03:43
shell 时间差(用时)格式化代码
usedTimeHourFormatted="`awk 'BEGIN{printf "%.1f\n",('${endTime}'-'${startTime}')/'3600000'}'`小时"
@panpf
panpf / ActivityEventRegistrar.kt
Created August 1, 2018 08:58
EventBus 事件注册器
package me.panpf.event
import android.annotation.TargetApi
import android.app.Activity
import android.app.Application
import android.os.Build
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.support.v4.app.FragmentActivity
import android.view.View
@panpf
panpf / ArgsBinder.kt
Last active June 14, 2018 06:54
Android 参数注入 kotlin 扩展
@file:Suppress("unused")
package me.panpf.args.ktx
import android.app.Activity
import android.os.Build
import android.os.Bundle
import android.os.IBinder
import android.os.Parcelable
import android.support.annotation.RequiresApi