标签: multitasking

iOS多任务轨道GPS定位

我只是想知道是否有可能制作一个iOS应用程序,它将在后台通过GPS跟踪您的位置.

我尝试使用内置的应用程序"地图",但无济于事.

如果可以的话,如果您可以参考一些示例代码,文档或教程,那将会很棒!

(如果这是重复的,请告诉我,我会将其删除)

iphone xcode gps multitasking

23
推荐指数
1
解决办法
2万
查看次数

如何在iOS设备锁定或其他应用程序时处理后台音频播放?

使用OpenFrameworks为iOS设计生成音乐系统时,我需要提供一种模式,用户可以在以下情况下收听应用程序生成的音乐:

  • 设备已锁定
  • 用户使用另一个应用程序

一些应用程序,如BLOOM或闹钟,就像这样,并向用户建议一个开关来启用/禁用此功能.

有什么提示吗?

audio background locked multitasking ios

22
推荐指数
2
解决办法
5万
查看次数

iOS进入后台时获取视图快照的确切时刻?

通过按下退出按钮将我的iPhone应用程序设置为后台时出现问题,然后通过点击主屏幕上的启动图标重新启动:应用程序的视图确实返回到我想要的初始状态,但在此之前它闪烁屏幕上较早的错误视图状态.

背景

我的主视图基本上由一系列相互关联的UIAnimateWithDuration调用组成.每当发生任何中断时我想要的行为是将动画重置为其初始状态(除非动画已完成并且应用程序已进入静态最终阶段),并且每当应用程序返回活动和可见状态时从那里重新开始.

在研究了我学到的主题后,我需要两种类型的中断处理代码来提供良好的ux:"即时"和"平滑".我有方法resetAnimation立即将视图属性重置为初始状态,方法pauseAnimation快速动画到相同的状态,另一个标签在视图顶部显示"暂停"淡入.

双击退出按钮

原因是"双击退出按钮"用例,它实际上不会隐藏您的视图或将您置于后台状态,它只是向上滚动一点以显示底部的多任务菜单.因此,在这种情况下立即重置视图状态看起来非常难看.动画过渡并告诉用户您已暂停似乎是一个更好的主意.

通过在我的App Delegate中实现applicationWillResignActive委托方法并从那里调用pauseAnimation,这个案例很好用.我通过实现applicationDidBecomeActive委托方法处理从多任务菜单返回并从那里调用resumeAnimation方法,淡出"暂停"标签,如果它在那里,并从初始状态开始我的动画序列.

这一切都很好,任何地方都没有闪烁.

访问翻转

我的应用程序是基于Xcode"实用程序"模板构建的,因此它有一个翻转视图来显示信息/设置.我通过在主视图控制器中实现这两个委托方法来处理访问反面并返回主视图:

  • (空隙)viewDidDisappear:(BOOL)动画

  • (空隙)viewDidAppear:(BOOL)动画

我在viewDidDisappear方法中调用resetAnimation,在viewDidAppear中调用resumeAnimation.这一切都很好,主视图是从过渡到可见状态的初始状态 - 没有意外闪烁的错误动画状态.但:

按下退出按钮并从我的应用程序图标重新启动(有缺陷的部分!)

这就是麻烦开始的地方.当我按下退出按钮一次并且我的应用程序开始向后台过渡时,会发生两件事.首先,applicationWillResignActive也在这里调用,所以我的pauseAnimation方法也会启动.它不需要,因为转换不需要在这里平滑 - 视图只是静态,"缩小"以显示主屏幕 - 但你能做什么?好吧,如果我只是在系统获取视图快照的确切时刻之前调用resetAnimation,它也不会造成任何伤害.

无论如何,其次,App Delegate中的applicationDidEnterBackground被调用.我试图从那里调用resetAnimation,以便在应用程序返回时视图处于正确的状态,但这似乎不起作用.似乎已经拍摄了"快照",因此,当我点击我的应用启动图标并重新启动时,错误的视图状态会在正确的初始状态显示之前在屏幕上短暂闪烁.在那之后,它运行良好,动画就像他们应该的那样,但是那个重新开始时刻的丑陋闪烁不会消失,无论我尝试什么.

从根本上说,我所追求的是,​​系统拍摄快照的确切时刻是什么?因此,准备我的视图以获取"纪念照片"的正确委托方法或通知处理程序是什么?

PS.然后是default.png,它似乎不会仅在首次启动时显示,而且每当处理器遇到困难或返回应用程序时由于其他原因而被短暂延迟.这有点难看,特别是如果你回到你看起来与你的默认视图完全不同的侧视图.但这是iOS的核心功能,我猜我甚至不应该试图找出或控制那个:)


编辑:由于人们要求提供实际代码,并且我的应用程序在询问此问题后已经发布,我会在这里发布一些.(该应用程序名为Sweetest Kid,如果你想看看它是如何工作的,它就在这里:http://itunes.apple.com/app/sweetest-kid/id476637106?mt = 8)

这是我的pauseAnimation方法 - resetAnimation几乎完全相同,除了它的动画调用没有持续时间和延迟,并且它没有显示'Paused'标签.我使用UIAnimation重置值而不是仅仅分配新值的一个原因是,由于某种原因,如果我不使用UIAnimation,动画就不会停止.无论如何,这是pauseAnimation方法:

    - (void)pauseAnimation {
    if (currentAnimationPhase < 6 || currentAnimationPhase == 255) { 
            // 6 means finished, 255 is a short initial animation only showing at first launch
        self.paused = YES;
        [UIView animateWithDuration:0.3
                              delay:0 
                            options:UIViewAnimationOptionAllowUserInteraction |
         UIViewAnimationOptionBeginFromCurrentState |
         UIViewAnimationOptionCurveEaseInOut |
         UIViewAnimationOptionOverrideInheritedCurve |
         UIViewAnimationOptionOverrideInheritedDuration
                         animations:^{ …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch delegates snapshot objective-c multitasking

21
推荐指数
1
解决办法
7914
查看次数

多线程的设计模式

当大型项目由于共享突变而崩溃时,多任务处理似乎是一场灾难.我会说共享资源是由多个线程访问的.调试和跟踪bug的来源以及导致它的原因变得非常困难.它让我问,是否有任何设计模式,可以在设计multithreaded程序时使用?

我非常感谢您对此的看法和意见,如果有人能够提出可以遵循的良好设计实践,以使我们的程序线程安全,那将是一个很大的帮助.

multithreading design-patterns design-principles multitasking

21
推荐指数
1
解决办法
2万
查看次数

远程控制事件导致iOS终止后台应用程序

我的应用程序使用AVAudioPlayer播放背景音频,并从iOS接收远程控制事件.音频播放时一切正常,但如果音频暂停并且我的应用程序移动到后台,则会发生奇怪的事情.如果我使用蓝牙设备在10分钟后恢复/取消暂停音频,iOS将使用以下消息终止我的应用:

<MyApp>[633] has active assertions beyond permitted time:
{(
     <SBProcessAssertion: 0x25f520> identifier: com.apple.mediaremote.sendremotecommand process: <MyApp>[633] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:58
)}
Run Code Online (Sandbox Code Playgroud)

这有两件非常奇怪的事情.

  1. iOS不会在10分钟后关闭我的应用程序.只有在通过蓝牙接收远程控制命令后才会这样做.

  2. 如果我在耳机上使用iOS的遥控器按钮或遥控器,我的应用程序将继续播放音频而不会有任何问题.

我无法弄清楚为什么蓝牙遥控器消息会导致iOS终止我的应用程序.我已经能够确认Pandora应用程序似乎没有类似的问题.

有没有人对此有所了解?

更新:进一步测试揭示了对错误的更清晰的描述.在音频暂停10分钟或更长时间并且应用程序遇到内存不足警告后,尝试恢复背景音频时,似乎会发生应用程序强制iOS崩溃.

以下步骤是重现错误所必需的:

  1. 暂停应用程序的音频,然后将其发送到后台(点击主页按钮或切换到另一个应用程序)或暂停应用程序的音频,同时它在后台
  2. 导致应用程序遇到低内存警告(模拟或真实)
  3. 10分钟后,尝试使用从蓝牙设备或扬声器底座等设备触发的遥控事件播放音频.

注意:当从外部设备(如蓝牙设备,扬声器底座或汽车适配器)启动最终远程控制事件时,iOS似乎只会强制崩溃应用程序.使用iOS的内置"遥控"界面或耳机上的遥控器似乎不会导致崩溃.

就像George在评论中提到的那样,我已经能够用我自己的App,Pandora和至少一个其他音频播放应用程序重现这一点.我已经向Apple提交了一份错误报告.

iphone bluetooth multitasking ios4 ios

18
推荐指数
0
解决办法
1554
查看次数

在后台轮询服务器的正确方法

假设这是可能的,我希望我的iOS应用程序在后台运行时轮询服务器(即基本上每隔30分钟检索一次URL的内容并通知用户它是否包含"有趣"的内容),基本上以类似的方式如果您没有使用推送通知,内置邮件客户端的工作方式.

现在,从我到目前为止的阅读(我是一位经验丰富的程序员,但对iOS新手),我认为可能有两种可能的方法:

  • 方法1:在applicationDidEnterBackground:中,启动执行定期轮询的后台任务;
  • 方法2:向您自己的应用程序发送一个没有可见文本的UILocalNotification给用户,但这只是用于在X分钟内唤醒您的应用程序以进行轮询(然后为下一个时间发送自己的另一个通知等).

我在Apple的调度,注册和处理通知的文档中看到,他们实际上似乎有一个示例usign方法1(他们的"聊天"示例,清单2-2).但令人惊讶的是,这种方法似乎只是坐在一个连续的循环中进行轮询,没有干预睡眠; 在我更熟悉的平台上,这是不可取的,会烧掉CPU.

因此,我的问题的子部分基本上是: - 方法2是否可行(或UILocalNotification 必须始终对用户造成可见警报,这不是我想要的),如果是这样,建议的方法是这样做吗? - 如果要做到这一点的方法是方法1,那么Apple的"聊天"示例是坐在一个连续的循环中实际上是好的(例如,iOS配给CPU以使这不是问题),如果不是这样的话iOS告诉后台进程"睡眠时间为X秒/分钟"?如果Apple的连续循环无论出于何种原因都可以,那么轮询之间的时间间隔是什么呢?

NB我很欣赏能够在后台运行本质上是iOS 4的功能.我不介意我的应用程序是否只能在iOS 4中运行.

iphone multitasking

17
推荐指数
1
解决办法
7258
查看次数

Android模拟器:由于内存不足而模拟进程重启的简便方法?

正如我刚才所了解的那样,Android保留随时终止后台应用程序进程的权利,以便回收RAM.该应用程序仍在运行,并仍然可以恢复,但我所有的静态变量都不见了(见文章).

我想在这种情况下模拟我的应用程序的行为.最简单的方法是什么?当然,必须有一种更简单,更可预测的方式,而不是编写一些分配大量内存的应用程序.

memory android process emulation multitasking

14
推荐指数
2
解决办法
1万
查看次数

应用内的应用

是否可以从另一个应用程序内部运行应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动.

所以在横向模式下,它看起来应该是这样的:

在此输入图像描述

这背后的想法是:

我希望能够在我自己的活动旁边开始并运行第三方活动,并且我希望能够通过控制第三方活动的活动创建单独的makros.

基本上,这样的事情:

  • 从我的应用内部启动第三方活动
  • 开始makro录制
  • 在第三方活动中做点什么
  • 停止makro录音
  • 随时使用makro

那么如何从我自己的活动中启动和控制另一个活动呢?

android multitasking

14
推荐指数
1
解决办法
1万
查看次数

iOS 4闹钟应用程序,支持多任务处理

我正在制作一个具有多任务支持的闹钟应用程序.但是,我坚持使用sdk的一些限制.

每当警报时间到达用户设置的某些属性时,我需要播放选定的警报声.这些属性: - 警报声可以是来自用户iPod库的音乐,也可以是应用程序包中的一些声音文件. - 可以将闹钟声音设置为渐进式播放.

此外,警报声必须在循环中在后台播放,直到用户取消或唤醒应用程序.

我想到的第一个合乎逻辑的事情就是使用本地通知,但是通过本地通知,您可以播放仅在应用程序包(不是iPod音乐)中且最长30秒的声音文件.当用户取消通知警报时,您也不会收到通知,iOS只是停止播放您的声音.

现在我正在考虑使用背景音频播放选项并播放静音直到闹钟时间,然后播放闹钟声音,同时还显示没有声音的本地通知.但我又如何知道用户是否取消了本地通知提醒并停止播放音频.但是根据Apple的文档,播放背景音频的应用程序仍然不允许播放iPod音乐(以及使用共享资源).

我也无法理解其他一些应用程序是如何做这些功能的.例如,Night Stand HD可以在后台播放iPod音乐,名为"Progressive Alarm Clock"的应用程序可以在后台播放渐进式声音.

关于这些问题的任何想法和建议?非常感谢您的任何帮助

iphone objective-c multitasking ios4

12
推荐指数
1
解决办法
8335
查看次数

检测应用程序何时从锁屏到iOS7上的其他应用程序变为活动状态

我的应用程序在从锁定屏幕变为活动状态时(在激活时锁定)或从其他任何东西变为活动状态时具有不同的行为.

在iOS 6及更低版本上,我可以检测到这一点

UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (UIApplicationStateInactive == state)
    // Coming from locked screen (iOS 6)
else
    // Coming from Springboard, another app, etc...
Run Code Online (Sandbox Code Playgroud)

但是在iOS 7上,状态值UIApplicationStateBackground在两种情况下都是如此.这是预期的行为吗?如何正确检测应用程序现在是否从锁屏启动?

注册开发者,我已经在NDA解除之前在devforums上发布了这个,请看这里

cocoa-touch background multitasking uiapplicationdelegate ios

12
推荐指数
1
解决办法
1万
查看次数