-
Notifications
You must be signed in to change notification settings - Fork 68
Longan – Activity
DylanCai edited this page Oct 29, 2021
·
3 revisions
简单地跳转:
startActivity<SomeOtherActivity>()
带参数跳转:
startActivity<SomeOtherActivity>("id" to 5)
带参数跳转推荐用下面的写法:
class SomeActivity : AppCompatActivity() {
private val id: String by safeIntentExtras(KEY_ID)
//...
companion object {
fun start(id: String) = startActivity<SomeActivity>(KEY_ID to id)
}
}
SomeActivity.start(id)
编写一个静态的 start()
方法传入所需的参数并跳转,在跳转的页面通过委托的方式获取值,可查看 Intent 的用法。调用静态方法跳转可以避免传漏或传错参数。
在 startActivityForResult()
跳转的页面往往需要在结束的时候带上回调的结果,一般需要几行代码来实现。比如:
val intent = Intent()
intent.putExtra("id", 5)
intent.putExtra("name", name)
setResult(RESULT_OK, intent)
finish()
几行代码有点繁琐,所以提供了一种更简单的方式能用一行代码实现:
finishWithResult("id" to 5, "name" to name)
提供了常用的 Activity 堆栈管理功能:
方法或属性 | 作用 |
---|---|
activityList |
获取 Activity 堆栈的列表 |
topActivity |
获取栈顶的 Activity |
isActivityExistsInStack<T>() |
判断 Activity 是否在堆栈中 |
finishActivity<T>() |
结束某个 Activity |
finishAllActivities() |
结束所有 Activity |
finishAllActivitiesExceptNewest() |
结束除了最新以外的所有 Activity |
快速实现双击返回键退出:
pressBackTwiceToExitApp("再次点击退出应用")
默认 2 秒内第二次点击返回键才退出,可以传多一个参数修改间隔时间:
pressBackTwiceToExitApp("再次点击退出应用", delayMillis = 1500)
如果需要自定义吐司或者换成 Snackbar
:
pressBackTwiceToExitApp {
snackbar("再次点击退出应用")
}
有时需要点击返回不退出应用,直接返回桌面:
pressBackToNotExitApp()
有些时候作用域内的 this 不是 Activity,这时我们用到 Activity 就要指明用哪个 this,比如 this@SignInActivity
。所以增加了拓展属性 context
, activity
, fragmentActivity
, lifecycleOwner
,将 Activity 强转成对应的类型进行使用,可以简化代码,提高代码的可读性。