Stack Overflow 上有一些类似的问题,但它们是通过单击通知来恢复暂停的活动。这已经对我有用了。
我正在开发一个视频/音频通话应用程序,如果我在前台服务运行时最小化我的应用程序,那么如果我单击通知,我的活动将恢复并运行良好。
我通过这段代码实现了这种行为:
val notificationIntent = Intent(this, VoiceCallActivity::class.java)
notificationIntent.setAction(Intent.ACTION_MAIN)
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER)
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
notificationIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
val notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0)
val notification = NotificationCompat.Builder(this, "call")
.setSmallIcon(R.drawable.logo_talkify)
.setContentTitle(title)
.setContentIntent(notificationPendingIntent)
.setContentText("Ongoing call")
.setUsesChronometer(true)
.build()
startForeground(1, notification)
现在的问题是,假设用户在通话正在进行时关闭了最近使用的应用程序(这将破坏通话活动)。现在,如果用户单击通知,它应该恢复活动而不是重新创建它。因为这是预期的行为。但我无法实现这一点,我尝试寻找解决方案,但尚未找到任何解决方案。
我怎样才能实现这个目标?
该活动实际上是由系统杀死并回收的,这是您无法控制的。
您可以做的是保留活动的必要数据,然后将它们提供给新重新创建的活动。
有很多方法可以做到这一点。使用首选项、服务、数据库...
请注意将此数据保存在活动的正确生命周期函数中。活动上的函数
onDestroy()
将是保存数据的安全位置。