Android 如何处理与Kotlin和指挥的意图
我有三个观点和一个活动。 MainActivity-MainController-PushedController-NotificationOpenController 主控制器包含一个按钮,当按下按钮时会执行一些黑盒操作,设备会在通知托盘中收到通知 单击通知时,我希望其行为与Android 如何处理与Kotlin和指挥的意图,android,android-intent,push-notification,android-view,kotlin,Android,Android Intent,Push Notification,Android View,Kotlin,我有三个观点和一个活动。 MainActivity-MainController-PushedController-NotificationOpenController 主控制器包含一个按钮,当按下按钮时会执行一些黑盒操作,设备会在通知托盘中收到通知 单击通知时,我希望其行为与 router.pushController(RouterTransaction.with(NotificationOpenController(bundle)) .pushChangeHandle
router.pushController(RouterTransaction.with(NotificationOpenController(bundle))
.pushChangeHandler(VerticalChangeHandler())
.popChangeHandler(VerticalChangeHandler()))
就这么发生了
非常感谢任何与Kotlin相关的提示或修订,因为我这样做是为了学习该语言
我不确定如何通过意图,也许是广播,以适当的方式实现这一点?但经过一些尝试和错误后,我的代码现在看起来如下:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
App.graph.inject(this)
setContentView(R.layout.activity_main_kotlin)
Log.d(TAG,"${FirebaseInstanceId.getInstance().getToken()}")
router = Conductor.attachRouter(this, controller_container, savedInstanceState)
val startingIntent : Intent? = intent
if(startingIntent?.extras != null){
transitionToNotificationOpenController(startingIntent?.extras)
}
else{
if (!router.hasRootController()) {
router.setRoot(RouterTransaction.with(MainController()));
}
}
}
override fun onBackPressed() {
if (!router.handleBack()) {
super.onBackPressed()
}
}
fun transitionToNotificationOpenController(bundl: Bundle?){
router.pushController(RouterTransaction.with(NotificationOpenController(bundl))
.pushChangeHandler(VerticalChangeHandler())
.popChangeHandler(VerticalChangeHandler()))
}
通知意图是这样构建的
val builder = NotificationCompat.Builder(this).setContentTitle("Title").setContentText("Text")
val notificationIntent = Intent(this, MainActivity::class.java)
notificationIntent.putExtra("message",messageBody)
val contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
...
manager.notify(1,builder.build())
但是,使用这种方法,动画会出错,用户只能在加载某些活动或启动新活动后看到“典型”弹出视图-
因为在按下通知时会有一个“活动恢复”,然后在按下后退按钮后会出现“活动暂停”->“活动恢复” 达到了预期的效果
<activity android:name=".ui.MainActivity"
android:launchMode="singleTop"
>
取得了预期的效果
<activity android:name=".ui.MainActivity"
android:launchMode="singleTop"
>