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使用应用程序上下文,到目前为止没有遇到任何错误。。。