【发布时间】:2020-05-13 03:11:57
【问题描述】:
自从我经历过这种类型的崩溃:
从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?
我开始想知道如何正确使用 startActivity-Intent 的上下文。
这是我的 Kotlin 代码(活动 -> 活动):
btn_scan.setOnClickListener {
val mIntent = Intent(applicationContext, Scanner::class.java)
mIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
mIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
applicationContext.startActivity(mIntent)
}
我可以用“this”解决这个问题:
btn_scan.setOnClickListener {
val mIntent = Intent(this, Scanner::class.java)
mIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
mIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
this.startActivity(mIntent)
}
但现在我对 this 的正确用法有点不安全,因为从内部函数访问它例如需要 this@ActivityName。 所以我想请你礼貌地解释一下,当从 Activity、从 Fragment 或从函数或使用 CoroutineScope 启动 Activity 时,如何知道哪个是正确的上下文
谢谢
【问题讨论】:
-
部分地,this 和 this@Activity 仍然不是 100% 清楚
标签: android kotlin android-intent android-context