app后台任务挂起时间

后台任务
当app被移到后台,通常几秒内就会被移到挂起状态。app能够延长这个时间,通过声明一个“后台任务”。
例如,有的app需要下载比较大的文件。比如我最爱的微博Instacast。当Instacast处于活动状态,它会开始下载新的博客。如果我点击Home键,Instacast会花5秒钟继续运行于后台状态,然后挂起。这将中断博客的下载,可能是5分钟或者更多。
iOS允许Instacast声明一个后台下载任务。这会让Instacast在我按下Home键之后仍然有额外的时间在后台运行,知道博客下载完成。app能申请的后台运行时间并不是无限的,app只能申请大约10分钟的后台运行时间,然后被iOS强行挂起。但是你无须为此担心。
无限的后台运行时间
所有的app都有5秒的后台运行时间。一些app可以请求10分钟的额外时间。有一小部分app确实需要无限的后台运行时间,iOS是允许的。








准确地说,在iOS5中,有5类app允许有无限的后台运行时间:
1. 可以在后台播放声频的app。例如Instacast在播放一个博客时。
2. 可以在后台跟踪你的位置的app。例如,TomTom导航系统,哪怕在另外一个app处于活动时,它也能发出语音提示。
3. 监听VOIP呼入的app。使用Skype时,当Skype在后台运行时,你仍然可以收到Skype来电。
4. 可以下载新内容的报刊类app。
5. 后台连续接收来自外部硬件(ExernalAccessory框架)的更新。
上面5种app在任务执行完毕时自动变成挂起状态。当Instacast停止博客播放时,它将挂起。还有一些iOS自带的app也能在后台连续运行,我们用的最多的可能是Mail程序。
<think>好的,我现在需要回答用户的问题:如何通过修改info.plist禁用macOS应用的App Nap功能,防止应用被后台长期挂起。首先,我要回想之前的对话内容。用户之前询问了Bundle Identifier在macOS和Python中的情况,我的回答涉及到了修改info.plist文件,比如在使用PyInstaller或Py2app打包时配置CFBundleIdentifier。现在用户的新问题是如何通过修改同一个info.plist文件来禁用App Nap,这是一个与macOS应用行为相关的配置。 首先,我需要确认App Nap是什么。App Nap是macOS的一项节能功能,自OS X Mavericks(10.9)引入,它会在应用处于后台且不活动时自动减少其资源占用,比如降低CPU优先级、暂停定时器等。这对用户来说可能不希望某些应用被限制,比如需要后台持续运行的任务。因此,禁用App Nap可以让应用在后台保持活跃。 接下来,我需要确定如何通过info.plist来禁用这个功能。根据苹果的文档,应用的Info.plist文件中的特定键值可以控制App Nap的行为。可能的关键字是LSAppNapIsDisabled或者NSAppSleepDisabled。需要查阅苹果开发者文档或者相关资源来确认正确的键名和值类型。 回想之前回答中提到的PyInstaller和Py2app的配置,用户可能需要将这些设置嵌入到打包工具的配置中,或者在已有的plist文件中手动添加。例如,在PyInstaller的spec文件中,或者在Py2app的setup.py中配置info_plist参数。需要给出具体的代码示例,方便用户操作。 另外,需要提醒用户注意的事项,比如不同的macOS版本可能有不同的行为,或者需要确认应用签名是否会影响plist的修改。还有,用户可能需要使用工具如Xcode或Plist编辑器来手动修改已打包应用的plist文件,但如果是通过Python打包工具生成的应用,最好在打包过程中预先配置这些设置,避免后续手动修改带来的麻烦。 还需要验证信息的准确性,确保推荐的键值是正确的。比如,根据苹果的文档,正确的键是LSAppNapIsDisabled,类型为布尔值,设置为true来禁用App Nap。这一步需要确认,避免错误的信息。可能还需要引用相关文档或开发者资源作为参考,但用户要求不要使用外部链接,所以需要以内部引用或者经验知识的形式呈现。 最后,生成的相关问题需要与当前主题相关,比如如何配置其他plist设置,或者如何处理应用签名后的权限问题,这些都能帮助用户进一步了解相关配置。</think>### 禁用macOS应用App Nap功能的配置方法 要实现禁用App Nap功能,需在应用的`Info.plist`文件中添加特定键值,以下是具体操作步骤: #### 1. **核心配置参数** 在`Info.plist`中添加以下键值对: ```xml <key>LSAppNapIsDisabled</key> <true/> ``` 或 ```xml <key>NSAppSleepDisabled</key> <true/> ``` 两者均可生效,但推荐优先使用`LSAppNapIsDisabled`(更符合Apple官方命名规范)[^1]。 #### 2. **Python打包场景配置** - **PyInstaller**:在spec文件中通过`info_plist`参数注入配置: ```python exe = EXE(..., info_plist={ 'LSAppNapIsDisabled': True, 'CFBundleIdentifier': 'com.yourcompany.appname', ... }) ``` - **Py2app**:在`setup.py`中声明: ```python OPTIONS = { 'plist': { 'LSAppNapIsDisabled': True, 'CFBundleVersion': '1.0' } } setup(app=APP, options={'py2app': OPTIONS}) ``` #### 3. **手动修改已打包应用** 若应用已打包,可通过以下步骤修改: 1. 右键点击`.app`文件 → **显示包内容** 2. 导航至`Contents/Info.plist` 3. 使用Xcode或专业工具(如PlistEdit Pro)添加键值: ```xml <dict> ... <key>LSAppNapIsDisabled</key> <true/> </dict> ``` #### 4. **验证配置有效性** 通过终端命令检查应用是否禁用App Nap: ```bash defaults read /Applications/YourApp.app/Contents/Info.plist LSAppNapIsDisabled ``` 返回`1`表示配置生效。 ### 注意事项 - **签名影响**:修改`Info.plist`后需重新签名应用,否则可能触发Gatekeeper警告: ```bash codesign --force --deep --sign - /Applications/YourApp.app ``` - **系统版本兼容性**:该配置适用于macOS 10.9+,低版本系统需通过其他方式管理能耗[^2]。 --- ### 相关问题 1. 如何通过Python打包工具配置macOS应用的启动参数? 2. macOS应用签名失败时如何排查和修复? 3. 哪些其他`Info.plist`参数可以优化后台应用的资源分配?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值