怎么让app一直保持运行(怎么让app一直运行,不会被停止)
苹果手机怎么保持app一直运行
我们都知道,苹果对APP占用硬件资源管的很严,更不要说应用后台时候的资源占用了。正常情况下,使用应用时,APP从硬盘加载到内存,开始工作;当用户按下home键,APP便被挂起,依然驻留在内存中,这种状态下,不调用苹果已开放的几种后台 *** ,程序便不会运行;如果在这个时候,使程序继续运行,则为后台状态;如果当前内存将要不够用时,系统会自动把之前挂起状态下的APP请出内存。所以我们看到,有些时候打开APP时,还是上次退出时的那个页面那些数据,有时则是重新从闪屏进入。
iOS系统后台机制大概可以分为5种状态
Not Running:APP没有启动,也没有后台运行。
Active:用户正在使用APP,比如说我们聊微信看网页的时候,APP就处于Active状态。
Inactive:这是一个过渡的状态,APP虽然打开了,但是用户没有跟APP有任何互动操作。
Background:APP在后台运行,微信会在没有打开的时候接收消息。
Suspended:APP虽然在后台运行,但是处于休眠状态,只占用一点内存。
** 那么我需要的是Background模式。即APP在后台运行同时保持程序active的状态 **
首先去xCode里面设置。到info.plist中添加以下信息:
然后到Capabilities里面打开后台模式,并根据项目的要求勾选对应的功能。我这里只需要保持后台运行并且播放背景音乐及通知功能。所以就勾选了之一个和最后一个
以上这两步是告诉系统我这个APP支持后台模式,对应的环境为音频环境。
可是到这一步,APP还是不能长时间运行到后台。
为什么?我们思考一下。我们让程序支持了后台运行的模式。那么我们是不是还需要系统知道我们的程序要在后台运行多久呢?我们需要告诉系统我们期望APP在后台存活的时间。
首先声明一个属性
@property (nonatomic, assign) UIBackgroundTaskIdentifier bgTask;
在进入后台的时候通过AppDelegate里面的 *** :
-(void)applicationDidEnterBackground:(UIApplication *)application{
[ self comeToBackgroundMode];
}
-(void)comeToBackgroundMode{
//初始化一个后台任务BackgroundTask,这个后台任务的作用就是告诉系统当前app在后台有任务处理,需要时间
UIApplication* app = [UIApplication sharedApplication];
self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
}];
//开启定时器 不断向系统请求后台任务执行的时间
self.timer = [NSTimer scheduledTimerWithTimeInterval:25.0 target:self selector:@selector(applyForMoreTime) userInfo:nil repeats:YES];
[self.timer fire];
}
-(void)applyForMoreTime {
//如果系统给的剩余时间小于60秒 就终止当前的后台任务,再重新初始化一个后台任务,重新让系统分配时间,这样一直循环下去,保持APP在后台一直处于active状态。
if ([UIApplication sharedApplication].backgroundTimeRemaining 60) {
[[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
}];
}
}
现在就可以让我们的APP一直运行在后台啦!总结下来的思路就是:通过一个后台任务(这个任务我们也不用管,它存在的意义就是和系统去请求后台运行的一定的时间),这个时间我们不知道也不用去管,我们可以通过该时间还剩下多少判断是否继续请求时间,如此循环,我们就可以不断的请求时间来保持我们的app一直运行在后台。
接下来解决音乐在后台模式(切换到后台或者锁屏状态)下停止播放的问题。
其实很简单。
//设置后台模式和锁屏模式下依然能够播放
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
//初始化播放器和两个音频(一个有声 一个无声)
NSURL *urlSound = [[NSURL alloc]initWithString:[[NSBundle mainBundle]pathForResource:@"pomodoSound" ofType:@"m4a"]];
playerSound = [[AVAudioPlayer alloc] initWithContentsOfURL:urlSound error:playerError];
NSURL *urlNoSound = [[NSURL alloc]initWithString:[[NSBundle mainBundle]pathForResource:@"backSound" ofType:@"mp3"]];
playerNoSound = [[AVAudioPlayer alloc] initWithContentsOfURL:urlNoSound error:playerError];
playerSound.numberOfLoops = -1;
playerNoSound.numberOfLoops = -1;
player = playerSound;
[player play];
下面解释一下AVAudioSession的一些设置参数
NSString *const AVAudioSessionCategoryAmbient;
静音模式或者锁屏下不再播放音乐,和其他app声音混合。
NSString *const AVAudioSessionCategorySoloAmbient;
默认模式,静音模式或者锁屏下不再播放音乐,不和其他app声音混合。
NSString *const AVAudioSessionCategoryPlayback;
表示对于用户切换静音模式或者锁屏 都不理睬,继续播放音乐。并且不播放来自其他app的音乐
NSString *const AVAudioSessionCategoryRecord;
不播放音乐,锁屏状态继续录音
NSString *const AVAudioSessionCategoryPlayAndRecord;
播放音乐,并录音
怎么让一个软件一直在后台运行?
下面以华为手机为例介绍具体操作 *** :
1、首先点击打开手机的设置功能,然后找到电池,再点击打开电池。
2、打开页面后,找到耗电保护,然后在耗电保护下找到想运行的软件。
3、找到想运行的软件后,点击打开该软件,如百度知道。
4、打开页面后,把后台冻结和检测到异常时自动优化这两项关闭即可。
oppo手机如何让app一直运行
通过虚拟按键或导航手势,可以进入最近任务/多任务界面,查看或清除最近的浏览记录。
操作 *** :
1、ColorOS 7.2及以后版本:进入最近任务界面后,长按底部的清除按钮,会跳转到最近任务管理界面。
2、ColorOS 7.0及以后版本:最近任务点击应用右上角菜单图标“:”即可进行锁定、分屏、管理等操作。
最近任务界面显示运行内存信息设置 *** :
ColorOS 7及以后版本:进入「设置 桌面与锁屏(其他设置) 最近任务管理 最近任务显示内存信息」打开开关即可。
本回答适用于OPPO所有机型。
oppo手机怎么让应用一直在后台运行?
1、先通过桌面点击【设置】进入。
2、点击【电池】--找到需要设置后台运行的软件(如果找不到,可点击其他查找)。
3、这里以“哔哩哔哩动画”为例,点击进入,关闭后台冻结,可使该软件在后台运行;
关闭检测到异常时自动优化,可使该软件长期在后台运行。
4、不过,关闭开关不利于手机省电,需要谨慎设置哦!
vivo手机怎么让应用一直运行
允许软件一直在后台运行:
1、进入设置--电池--后台耗电管理--对应软件--选择“允许后台高耗电”(部分机型需进入设置--电池--后台高耗电--将对应的软件开启);
2、可以进入i管家--应用管理/软件管理--权限管理--自启动--开启软件的自启权限;
3、进入多任务卡片界面,下拉软件加入到加速白名单;
4、若软件被隐藏了,请把软件取消隐藏或移出原子隐私系统。
注:若是出现因软件异常占用内存,被智慧引擎强行关闭的情况,则是软件自身原因不支持设置。
华为手机怎么才能让后台软件一直运行,不会过一会自动关闭?
为了节约电量和 *** 流量,锁屏后部分应用程序会自动关闭。
如果您希望某些应用一直保持运行状态,可以将此应用设置成后台保护,操作方式如下:
Magic UI 2.0/2.0.1:进入手机管家应用启动管理,找到对应的应用,关闭自动管理,在弹出的三个选项中,将允许后台活动的开关开启;
EMUI 9.0/EMUI 9.0.1:手机管家应用启动管理,找到对应的应用,关闭自动管理,在弹出的三个选项中,将允许后台活动的开关开启;
EMUI 8.X:进入 手机管家 启动管理,找到对应的应用,关闭自动管理,在弹出的三个选项中,将允许后台活动的开关开启。
EMUI 5.X:进入手机管家界面,点击 剩余 xx% 锁屏清理应用,关闭需要在后台运行应用程序的开关。
EMUI 4.X:进入 手机管家界面,点击 剩余 xx% 受保护应用,打开对应应用程序的开关。
EMUI 3.1: 手机管家 省电管理,从屏幕下半部分开始上划屏幕,点击 受保护应用,打开对应应用程序的开关。
EMUI 3.0: 手机管家 省电管理 耗电详情 锁屏后继续运行,打开对应应用程序的开关。
如果您希望清理后台后应用也保持在后台运行,建议您在后台中点击应用上方的锁图标,将应用锁定在后台即可。
说明:省电模式如果设置成超级省电,超级省电模式会自动启用相关策略来进行省电,您即使设置了受保护应用可能也会在锁屏后被关闭。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。