Android 如何处理与Kotlin和指挥的意图

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

我有三个观点和一个活动。 MainActivity-MainController-PushedController-NotificationOpenController

主控制器包含一个按钮,当按下按钮时会执行一些黑盒操作,设备会在通知托盘中收到通知

单击通知时,我希望其行为与

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"
        >