Android 如何使用导航组件(正确)从前台服务打开活动/片段

Android 如何使用导航组件(正确)从前台服务打开活动/片段,android,android-architecture-navigation,android-jetpack-navigation,Android,Android Architecture Navigation,Android Jetpack Navigation,在我的用例中,我有一个绑定到通知的前台服务 用户可以关闭应用程序,但前台服务仍处于活动状态。此外,用户可以单击通知并打开主页片段 我当前的NavGraph如下所示: 当前,当用户单击通知时,我正在使用NavDeepLinkBuilder打开我的HomeFragment: val pendingIntent = NavDeepLinkBuilder(context) .setGraph(R.navigation.nav_graph) .setDestination(R.id.ho

在我的用例中,我有一个绑定到
通知的前台服务

用户可以关闭应用程序,但前台服务仍处于活动状态。此外,用户可以单击
通知
并打开
主页片段

我当前的
NavGraph
如下所示:

当前,当用户单击通知时,我正在使用
NavDeepLinkBuilder
打开我的
HomeFragment

val pendingIntent = NavDeepLinkBuilder(context)
    .setGraph(R.navigation.nav_graph)
    .setDestination(R.id.homeFragment)
    .createPendingIntent()

return NotificationCompat.Builder()
    .setOngoing(true)
    .setContentIntent(pendingIntent)
    .build()
此代码有效,但我面临一些问题:

  • onBackPressed
    上,
    HomeFragment
    正在“闪烁”,我需要按两次后退按钮才能从
    HomeFragment
    实际关闭应用程序
  • 这种方法看起来并不正确,因为我的应用程序中没有深度链接
  • NavDeepLinkBuilder
    )中,只有destinationId

由于这种情况,我的问题是:
NavDeepLinkBuilder
是从服务中打开我的
HomeFragment
的正确方法吗


谢谢

你找到解决办法了吗?我也有同样的问题。@AndroidRuntimeException很抱歉回复太晚。使用这种方法不会引起任何问题,所以我保持了与问题中描述的完全相同的方式,并且它工作得很好。您在服务中使用的是什么上下文?正如他们所说,您必须使用活动上下文。@HimanshuMalik使用应用程序上下文,到目前为止没有遇到任何错误。。。