Android 从服务开始活动

Android 从服务开始活动,android,service,pjsip,oncreate,heads-up-notifications,Android,Service,Pjsip,Oncreate,Heads Up Notifications,在Android 10中,从后台启动活动是有限制的。我正在开发Voip呼叫应用程序。所以,由于这个限制,我已经从服务到挂起的意图开始了活动。每当用户在提示通知中单击“应答”时,我将引导他们进行特定的活动 我的问题是,在点击通知中的应答操作后,活动不会很快启动。首先显示白色屏幕,然后加载活动。因此,人员A和B的通话持续时间不同。此外,延迟后加载调用活动也不是一个好方法 在whatsapp中,我一旦点击接听,立即启动活动,同时通话持续时间也开始了。所以它真的很好。在whatsapp中加载活动和调用持

在Android 10中,从后台启动活动是有限制的。我正在开发Voip呼叫应用程序。所以,由于这个限制,我已经从服务到挂起的意图开始了活动。每当用户在提示通知中单击“应答”时,我将引导他们进行特定的活动

我的问题是,在点击通知中的应答操作后,活动不会很快启动。首先显示白色屏幕,然后加载活动。因此,人员A和B的通话持续时间不同。此外,延迟后加载调用活动也不是一个好方法

在whatsapp中,我一旦点击接听,立即启动活动,同时通话持续时间也开始了。所以它真的很好。在whatsapp中加载活动和调用持续时间计时器时,我没有遇到任何延迟

我怎样才能在我的应用程序中实现这一点。 请任何人帮我做这个

我已经在版本10和版本8中的两个不同设备上测试了从通知接听来电。 下面是接听来电的过程。(我正在使用Pjsip库)

  • 点击应答后,立即设置状态PJSIP_SC_OK。(发送200 OK)
  • 其他人将以200 OK回复
  • 之后,调用状态将被更改和捕获,并发送到其他类进行处理
  • 使用处理程序将所需消息传递给活动
  • 接收到消息的活动将根据该消息进行处理
  • 如果活动收到呼叫确认消息,则仅设置呼叫连接状态屏幕,然后启动计时器
  • 在上述第一步之后,在call connected屏幕中启动计时器所用的时间为1.xx秒(安卓10)和2秒(安卓8)

    在活动的onCreate中,我在展示布局之前做了以下工作

  • 设置视图可见性、设置图像以及使用位图调整图像大小。 测试时发现,在Oreo版本中处理活动的Oncreate需要0.65秒,而在Q版本中只需要0.27秒。 不仅是奥利奥,还有一些较旧的版本
  • 这就是为什么我会有时差…我能做什么


    一旦用户点击通知中的应答,我需要显示呼叫连接屏幕,没有任何延迟,也没有白色屏幕。Whatsapp能够实现dat。那么,在我的voip呼叫应用程序中如何实现这一点呢???

    如果没有源代码,就很难提出任何建议或尝试任何方法来解决问题。可能会使用捆绑包创建一个挂起的意图,并利用广播接收器处理带有自定义广播的事件?

    如果没有源代码,就很难提出任何建议或尝试任何解决问题的方法。可能会使用捆绑包创建挂起的意图,并利用广播接收器处理自定义广播的事件?

    可能是因为您在onCreate中做了太多工作,导致视图渲染延迟。将部分代码移出onCreate,看看它是否能加快速度。

    可能是因为在onCreate中做了太多工作,导致视图渲染延迟。将其中一些代码移出onCreate,看看它是否能加快速度。

    请提供一些您尝试过的代码,以便社区能够帮助您。@Piyus肯定会用添加代码更新帖子最有可能的是,您的问题在于活动,而不是通知。分析您的活动并确定其显示时间。@commonware您是对的。我已经查过密码了。。在启动活动之前,我得到了一个白色屏幕。在那之后,只有我的呼叫连接屏幕显示出来……我不知道如何克服这一点,实际上正如@commonware所说的,这是您活动的启动问题。你应该分析一下,看看有什么问题。使用android:windowDisablePreview
    可以消除白色屏幕,但肯定不能解决主要问题。我认为另一种立即显示窗口的方法是使用全屏浮动窗口,这看起来像是一个活动。请提供一些您尝试过的代码,以便社区可以帮助您。@Piyus肯定会用添加代码来更新帖子最有可能的是,您的问题在于活动,而不是通知。分析您的活动并确定其显示时间。@commonware您是对的。我已经查过密码了。。在启动活动之前,我得到了一个白色屏幕。在那之后,只有我的呼叫连接屏幕显示出来……我不知道如何克服这一点,实际上正如@commonware所说的,这是您活动的启动问题。你应该分析一下,看看有什么问题。使用android:windowDisablePreview
    可以消除白色屏幕,但肯定不能解决主要问题。我认为另一种立即显示窗口的方法是使用浮动窗口,它是全屏的,看起来像一种活动。