【问题标题】:Minimizimg an activity in previous activities in android最小化android中先前活动中的活动
【发布时间】:2018-08-18 21:45:55
【问题描述】:

我正在开发一个支持即时消息的视频通话组件。我想添加在按下后最小化视频通话屏幕的选项,然后返回消息activity 以同时执行这两项操作(类似于 WhatsApp 的功能)。问题是,我找不到解决方案,因为回到以前的activity 将完成当前的。那么我如何override 我的onBackpressed() 才能最小化而不是完成呼叫屏幕activity(假设将其添加到通知中)并返回消息activity

【问题讨论】:

    标签: android activity-lifecycle back-stack


    【解决方案1】:

    你想做的事叫Picture-in-Picture

    Android 8.0(API 级别 26)允许在 画中画 (PIP) 模式。 PIP 是一种特殊类型的多窗口 模式主要用于视频播放。它允许用户观看视频 导航时固定在屏幕一角的小窗口 在应用程序之间或在主屏幕上浏览内容。

    一个非常简约的例子:

    1) 在您的 AndroidManifest 文件中指定支持 PIP 的活动:

    <activity
          android:name=".VideoActivity"
          android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
          android:resizeableActivity="true"
          android:supportsPictureInPicture="true"/>
    

    2) 触发 PIP 模式以响应某些用户操作,例如在onBackPressed()

    override fun onBackPressed() {
       // Ideally you would want to enter PIP while a video is playing, so:
       val isVideoPlaying = // have a condition here that holds true while the video is playing
    
       if (isVideoPlaying) {
            enterPictureInPictureMode()
       } else {
            super.onBackPressed()
       }
    }
    

    【讨论】:

    • 谢谢你我明白你在说什么,但这不是我想要的。我真的不关心画中画和播放视频。我只想能够在我的应用程序中保持通话,即使它是语音通话,这样用户也可以在通话进行时发送消息和做其他事情。所以我只想在单击后退按钮时将调用隐藏在我以前的活动中的某个位置,并且我想在旧版本的 android 上支持它。
    • 嗯,这与您提出的问题略有不同:“我想添加最小化视频通话屏幕的选项” - 您可以使用 PIP 完成。 . 现在,为了在应用程序中维护呼叫,以便用户还可以在呼叫进行时发送消息和做其他事情,这意味着将您的呼叫逻辑与Activity 解耦。也就是说,如果您不想在Activity 被销毁时结束通话,请将其移出Activity。另一种方法是将调用逻辑放在Service 中。 Service 在后台运行,未绑定到 Activity 生命周期。
    • 您是否有任何解决方案可以最大限度地减少诸如whats app call 之类的活动?我想在通话时最小化应用程序,就像什么应用程序一样
    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2016-11-11
    • 2010-12-02
    • 2011-02-21
    • 1970-01-01
    • 2016-02-02
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多