首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用户界面空闲时,iOS后台线程减速

用户界面空闲时,iOS后台线程减速
EN

Stack Overflow用户
提问于 2016-05-05 18:24:07
回答 1查看 1.2K关注 0票数 11

上下文优先

我有一个Xamarin应用程序,实质上是从远程服务器上传输视频。我有一个像这样循环的后台线程(伪代码):

代码语言:javascript
运行
复制
private void UpdateMethod()
{
    while (running)
    {
        bool success = WaitForUpdate();

        if (!success)
        {
            break;
        }

        Update update = GetUpdate();
        SendUpdateToConcurentQueue(update);
    }

    Disconnect();
}

我以这样的方式启动后台线程:

代码语言:javascript
运行
复制
Thread thread = new Thread(UpdateMethod);
thread.IsBackground = true;
thread.Start();

The issue

当我开始流淌时,一切都是完美的。只是在没有与设备交互的10秒之后,它才变得非常慢。我已经从后台线程输出了更新的数量,它们的速度似乎要慢得多。我通常得到大约2-6个更新进程每次更新(60 get )。当它是超慢,我得到一个任何时候6更新周期。

有一件事让我感到困惑:当我拉下iOS顶部的菜单时,更新会重新启动,流会突然恢复正常速度。更新率上升了10秒,然后又回到了疯狂的滞后状态。

我试过什么

我试图启动一个只有以下内容的调度队列:

代码语言:javascript
运行
复制
DispatchQueue queue = new DispatchQueue("updateQueue");
queue.DispatchAsync(this.UpdateProcess);

这似乎一点帮助都没有。

我还试图在更新线程中更改QualityOfService属性,如下所示:

代码语言:javascript
运行
复制
NSThread.Current.QualityOfService = NSQualityOfService.UserInitiated

也不起作用!在我看来,iOS由于某种原因降低了线程的优先级。如果我在我的UpdateMethod方法中放置了一个断点,当应用程序没有滞后时,它就会被击中。但是当有延迟的时候,断点就不会被击中。现在这真的让我很困惑,因为代码仍然在运行!我还是收到了更新,只是速度慢了很多.

编辑:我用仪器测试,发现网络被切断了.调查,但如果有人知道任何类型的网络节流的iOS,让我知道。

EN

回答 1

Stack Overflow用户

发布于 2016-05-05 18:48:07

尝试将IdleTimerDisabled设置为true,我们在iOS游戏中一直这样做,以防止iOS闲置我们的游戏。

注意:我们只在polite way中这样做,只有当用户由于观看重放、更改级别的多媒体字幕等原因而不触摸屏幕时,才会这样做。

注意:当你不需要的时候,一定要重置空闲(当你的应用程序在后台运行,等等),比如杀死电池,让用户对你的应用感到沮丧:Apple拒绝

苹果:应用程序空闲计时器信息

Xamarin:UIKit.UIApplication.IdleTimerDisabled性质

此属性的默认值为否。当大多数应用程序在短时间内没有用户输入时,系统会将设备置于屏幕变暗的“睡眠”状态。这样做是为了节省电源。然而,除了加速度计(比如游戏)之外,没有用户输入的应用程序--比如游戏--可以通过将该属性设置为“空闲计时器”来避免系统睡眠。 D.重要 只有在必要时才应设置此属性,并应确保在不再存在此属性时将其重置为“NO”。大多数应用程序应该让系统关闭屏幕时,闲置的计时器过去。这包括音频应用程序。在适当使用音频会话服务的情况下,当屏幕关闭时,播放和录制将不间断地进行。应该禁用空闲计时器的唯一应用程序是映射应用程序、游戏或应用程序,当用户交互最少时,应用程序需要继续显示内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37057661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档