如何禁止App在后台运行以及如何保存和恢复App的状态
来源:互联网 发布:易语言统计成绩源码 编辑:程序博客网 时间:2024/04/23 22:17
如果禁止App在后台运行
iOS上的App类似于Windows上的进程,有几种不同的生存周期:
而App中的任何View也有类似的生存周期:
如果App处在非活动的状态下,那么接着它将进入挂起状态.
某些情况下我们可能不希望这样,我们想要当App进入后台时就将其结束掉.可以通过修改项目的info.plist文件来实现:
如上图,将Application does not run in background设置为YES就可以做到这一点.这时当你在运行App时按Home键后,你的App不会进入后台而是直接被结果掉了,下一次运行你的App将会重新运行.
如何保存和恢复App的状态
第二个问题是如果App不从后台恢复的话如何自动保存其之前的状态呢?
举一个UI的例子,在主界面上有一个Text控件:
@property (weak, nonatomic) IBOutlet UITextField *inputText;
我们希望在输入一些字符,当App关掉再次运行的时候之前输入的那些字符会自动显示在Text中.
首先在Main.stroyboard中将ViewController的Restoration ID设置为viewController:
或者在代码中设置
self.restorationIdentifier = @"myViewController";
然后在AppDelegate.m中添加如下回调方法:
-(BOOL)application:(UIApplication*)application shouldSaveApplicationState:(nonnull NSCoder *)coder{ return YES;}-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder{ return YES;}
如果你想要保存App级别的数据可以使用以下2个回调方法:
-(void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder{ float val = [coder decodeFloatForKey:kAppValue]; NSLog(@"value is %f",val);}-(void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(nonnull NSCoder *)coder{ [coder encodeFloat:99.99 forKey:kAppValue];}
如果你想要保存某个View界面中的数据,就像一开始说的那样,你可以在ViewController.m里添加如下2个方法:
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder{ [super decodeRestorableStateWithCoder:coder]; self.inputText.text = [coder decodeObjectForKey:kSaveKey];}-(void)encodeRestorableStateWithCoder:(NSCoder *)coder{ [super encodeRestorableStateWithCoder:coder]; [coder encodeObject:self.inputText.text forKey:kSaveKey];}
0 0
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- 如何让安卓APP一直在后台运行?
- android 如何判断app 运行在后台
- 设置App运行在后台
- iOS在后台运行app
- iOS让你的app一直在后台活着(运行)
- 如何:在后台运行操作
- Android 判断app是否运行在后台
- 判断App是否在后台运行
- 【sdk>14】判断app运行在后台
- Android 监控APP是否在后台运行
- Android 判断App是否在后台运行
- 如何让你的app在后台被干掉后优雅的重新启动
- 如何让你的app在后台被干掉后优雅的重新启动
- 判断App是否在后台运行,判断App后台运行
- Android 判断app是否在前台还是在后台运行
- spark学习笔记
- UIUITextView设置类似于UITextField的placeholder
- 数据分类:决策树Decision Tree
- 代码规范工具-Checkstyle使用手册
- 【整理】python 3.x爬虫
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- Android官方API Demo学习之联系人获取
- LeetCode[Array]---- 4Sum
- iOS应用跳转问题之:应用跳转
- 谈需求分析工作
- 文字生成二维码
- 【QT】:QT实现连接opencv,版本为2.3.10
- LeetCode 190. Reverse Bits
- live555