大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 如果禁止App在后台运行 iOS上的App类似于Windows上的进程,有几种不同的生存周期: 而App中的任何View也有类似的生存周期: 如果App处在非活动的状态下,那么接着它将进入挂起状态. 某些情况下我们可能不希望这样,我们想要当App进入后台时就将其结束掉.可以通过修改项目的info.plist文件来实现: 如上图,将Application doe…
iOS程序进入后台后,是不允许读写任何文件和数据库(sqlite),但是允许读写NSUserDefault中的数据. 因此在后台时如果想存储数据,则可使用NSUserDefault(偏好设置)临时保存数据,等程序进入前台时, 再把存在偏好设置中的数据存储到文件或数据库中.而且经测试偏好设置中保存的数据的大小没有限制, 至少20M(已经测试过)的数据都可以.…
App有三种状态: 1. 死亡状态(未打开App); 2. 前台运行状态(打开状态); 3. 后台暂停状态(停止所有动画, 定时器, 多媒体联网等操作) 4. 后台运行状态(后台运行); --------- 需要在AppDelegate中设置: 1.  在 - (void)applicationDidEnterBackground:(UIApplication *)application方法中 设置: - (void)applicationDidEnterBackground:(UIApplic…
在安卓开发过程中,当点击HOME键,将app运行在后台时,然后再点击app图标进入时,遇到了如下两种情况: 1.每次打开时,app的入口页面总是被执行. 2.当运行内存被其它应用占用完时,在进入app时,home时的当前页面数据没有被清除(待进一步确认),此时页面正常,点击返回键之后显示的页面数据被清除了,而导致应用崩溃. 下面将针对这两个问题的处理方式进行相对应的说明. 一.如果activity的启动方式是singleTask,则会出现此问题.如果是默认的standard方式,则没有这样的问题…
https://www.jianshu.com/p/d466f2da0d33 在我看来,苹果系统与安卓系统最直观的区别就是后台处理方式了吧,安卓手机一旦开启了很多app放到后台,即使前台什么也不做,就是切换一下系统界面都会觉得卡;苹果手机不论开多少app在后台都感觉很流畅. 这是因为安卓默认处理app为真后台,可以一直在后台处理操作; 而iOS为了让设备尽量省电,减少不必要的开销,保持系统流畅,因而对后台机制采用墓碑式的“假后台”.除了系统官方极少数程序可以真后台,一般开发者开发出来的应用程序后…
//在视图中运行操作中进行周期操作 - (void)applicationDidEnterBackground:(UIApplication *)application { [self beingBackgroundUpdateTask];   [self endBackgroundUpdateTask]; } - (void)beginBackgroundUpdateTask{ self.backgroundUpdateTask = [[UIApplication sharedApplicat…
/// <summary> /// 重写按键事件 /// </summary> /// <param name="keyCode"></param> /// <param name="e"></param> /// <returns></returns> public override bool OnKeyDown([GeneratedEnum] Keycode keyC…
第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动. 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备). 活动-app处于“使用中”的状态. 后台-app不再屏幕上显示,但它仍然执行代码. 挂起-app仍然驻留内存但不再执行代码. 按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起. 在内存吃紧的时候,iphone会首先关闭那些挂起的app. 从 iOS 4 开始,应用就可以在退到后台后,…
/** *  当app进入后台时调用 */- (void)applicationDidEnterBackground:(UIApplication *)application{    /**     *  app的状态     *  1.死亡状态:没有打开app     *  2.前台运行状态     *  3.后台暂停状态:停止一切动画.定时器.多媒体.联网操作,很难再作其他操作     *  4.后台运行状态     */    // 向操作系统申请后台运行的资格,能维持多久,是不确定的  …
*  参考:http://www.nivalxer.com/archives/187 首先,我要说明的是在iOS中,一般应用程序在后台挂起之后仅拥有3分钟时间来处理相应的未完成事件,但是3分钟之后就会被系统直接杀死:我们这时还可以再次向后台申请10分钟来处理需要处理的未完成事件,但是10分钟之后就再也不能请求道额外的时间来做事情了,然而有时候为了满足功能的需要,我们需要始终的让程序在后台运行,这时候就想到了iOS中的几种特殊的功能:1. voip技术:对于这种技术我也仅仅是知道而已,而且根据查阅…
在一些场景中,经常会需要判断App是否在后台运行,比如是否显示解锁界面,收到新消息是否显示Notification等.需求可能是多样化的,但所依仗的原理是相通的,今天Stay打算说说这些需求的最优解. 当然,Stay肯定不会说去for loop判断当前runningProcess或者runningTasks.比如: 这样 或者这样 这种方法调用起来感觉就像是在用Windows系统里的任务管理器,真是让人蛋疼.我们暂且不去计较性能问题,就说为啥Android连个像样的API都不给我,着实让人郁闷.…
参考:http://www.douban.com/note/375127736/ 1 使用开源代码MMPDeepSleepPreventer将文件加入工程,包括音频文件.可以在源文件中加入单例,便于使用:+ (MMPDeepSleepPreventer *)sharedSingleton{    static MMPDeepSleepPreventer * _sharedSingleton = nil;    @synchronized([MMPDeepSleepPreventer class]…
使用block的另一个用处是可以让程序在后台较长久的运行.在以前,当app被按home键退出后,app仅有最多5秒钟的时候做一些保存或清理资源的工作.但是应用可以调用UIApplication的beginBackgroundTaskWithExpirationHandler方法,让app最多有10分钟的时间在后台长久运行.这个时间可以用来做清理本地缓存,发送统计数据等工作. 让程序在后台长久运行的示例代码如下: // AppDelegate.h文件 @property (assign, nona…
最近项目有个需求需要让app在后台一直运行计时着,找了一些资料,只能用比较无耻的做法了,播放一段没有声音的音频文件,这样你的APP就不会被系统杀掉~~ 我们只需要用到<AVFoundation/AVFoundation.h>框架,然后播放一段没有声音的音频文件就可以实现了,贴代码: #pragma mark - 音频播放,让后台一直运行 //播放器 - (AVAudioPlayer *)audioPlayer { if (_audioPlayer == nil) { dispatch_queu…
iOS程序进入后台运行的实现 视频中看到老师用的iOS7,代码中有开启timer,无限请求数据的功能,但是切换到后台,代码就不打印了 自己用的iOS9,进入后台还是可以打印的,再次进入前台也可以正常运行,但是功能不实现了 实现程序后台运行的方法 /** * 程序进入后台后 * * @param application */ - (void)applicationDidEnterBackground:(UIApplication *)application { // 向操作系统申请后台运行的资格,…
文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice…
最近做项目的时候碰到一个棘手的问题,花了不少时间才找到原因并解决.特此记录这个被我踩过的坑,希望其他朋友遇到此问题不要调到这坑里去了. 问题描述: 1.背景:我的app中某个界面的Activity是继承FragmentActivity,因为此界面包含两个Fragment.这里我称为FragmentA和FragmentB吧.在Activity中有个刷新按钮,用来刷新ViewPager当前Fragment内容的刷新.点击Activity的刷新按钮之后,刷新按钮需要有简单的旋转动画,等Fragment…
后台机制的不同,算是iOS 和 Android的一大区别了,最近发布的iOS7又对后台处理做了一定的更改,找时间总结一下编码上的区别,先做个记录. 先看看iOS的把,首先需要仔细阅读一下Apple的官方文档 iOS App Programming Guide中的App States and Multitasking,其中的Background Execution and Multitasking部分要仔细阅读. ios的程序有5种状态,not running,inactive, active,…
http://www.cocoachina.com/bbs/read.php?tid=149564 文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间.   还有三种类型的可以运行在后以,   1.音乐   2.location   3.voip     文二     在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供…
IOS允许长时间在后台运行的情况有7种: audio VoIP GPS 下载新闻 和其它附属硬件进行通讯时 使用蓝牙进行通讯时 使用蓝牙共享数据时 除以上情况,程序退出时可能设置短暂运行10分钟 让程序退出后台时继续运行10分钟 在XXAppDelegate中增加:UIBackgroundTaskIdentifier bgTask; - (void)applicationDidEnterBackground:(UIApplication *)application {    bgTask = […
默认情况下,当app被按home键退出后,app仅有最多5秒钟的时候做一些保存或清理资源的工作.但是应用可以调用UIApplication的beginBackgroundTaskWithExpirationHandler方法,让app最多有10分钟的时间在后台运行.这个时间可以用来做清理本地缓存,发送统计数据等耗时工作. // AppDelegate.h文件 @property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUp…
文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以,1.音乐2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice c…
默认情况下,普通的CoreBluetooth 任务中的大多数,无论是Central还是peripheral ,在后台或者挂起状况下都是无法进行的.也就是说,你可以通过宣布你的应用程序支持后台处理模式来允许你的一个应用程序把你从一个挂起状态中唤醒来执行某些蓝牙相关的事件. 即使你的应用程序支持一种或者两种CoreBluetooth后台执行模式,那么他也不会永远运行.在某些时候,系统也许由于当前的前台应用程序而终止你的应用程序来释放内存,这将会导致任何活跃的或者挂起的连接会丢失.在iOS7中,Cor…
一般来说, IOS很少给App后台运行的权限. 仅有的方式就是 VoIP. IOS少有的为VoIP应用提供了后台socket连接,定期唤醒并且随开机启动的权限.而这些就是IOS上实现VoIP App的关键. 苹果官方文档对于的描述就短短的一页(点击这里),很多细节没有提及. 这篇微博通过具体实现和查阅资料,补充了这些细节.并且列举出了在实现过程中可能遇到的问题, 作为参考. 博客: http://www.cnblogs.com/jhzhu 邮箱: jhzhuustc@gmail.com 作者:…
对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设置使得socket后台运行. 这里以XMPP的socket为例,为了实现后台接收到消息后发送推送通知,需要以下两步设置: ①打开info.plist,添加下面的键值对: Required background modes = App provides Voice over IP services ②…
  http://wiki.hudson-ci.org/display/HUDSON/Tomcat Tomcat from Windows GUI Testing in Windows Most Windows services -- including those run with the option "Allow service to interact with desktop" in Windows XP and Vista -- do not have access to m…
1.设置角标的代码:   // 从后台取出来的数据可能是int型的不能直接给badgeValue(string类型的),需要通过description转化  NSString *count = [responseObject[@"count"] description]; if ([count isEqualToString:@"0"]) { self.tabBarItem.badgeValue = nil; //设置tabBar的角标 [UIApplication…
说明: 一般如果修改了apple官方的推送声音后,则APP进入后台后,推送会播放开发者自定制的推送声音,而用户在使用APP(也就是APP运行时)的时候,一般是不会有推送声音,因为此时的推送内容已经呈现在用户眼前了.因此,要使用户在使用的时候有推送声音,我们必须在接受推送的时候播放自己定制的声音. 一.怎么修改苹果原生的推送声音?(APP进入后台才有效果) 1.将声音文件格式转成.wav格式(不知道怎么转,百度去),然后加入到Xcode项目中. 2.服务器给你推送的userinfo中sound字段…
Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service.Service 可以分为有无限生命和有限生命两种.特别需要注意的是Service跟Activities是不同的(简单来说可以理解为后台与前台的区别),例如,如果需要使用Service的话,需要调用startService(),从而利用startService()去调用Service中的OnCreate()和onStart()方法来启动一个后台的Service.      启动一个Service的过程如下:conte…
什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法.该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中.GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术. GCD和block的配合使用,可以方便地进行多线程编程. 应用举例 让我们来看一个编程场景.我们要在iPhone上做一个下载网页的功能,该功能非常简单,就是在…