- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
Apple 的文档"App States and Multitasking" (“移动到后台时要做什么”部分)说当应用程序进入后台时保存:
Save user data and app state information. All unsaved changes should be written to disk when entering the background. This step is necessary because your app might be quietly killed while in the background for any number of reasons. You can perform this operation from a background thread as needed.
当我开始分派(dispatch)操作时,例如保存在 applicationDidEnterBackground:
需要一些时间,如下所示按下主页按钮时我没有得到 NSLog 输出。返回应用程序后,出现 NSLog 输出。
- (void)applicationDidEnterBackground:(UIApplication *)application {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
我能否确定 performOperation
方法已完全执行,还是在应用进入休眠模式时中断?
最佳答案
确保将 plist
键设置 UIApplicationExitsOnSuspend
设置为 no 以确保调用 applicationDidEnterBackground
。
接下来确保您开始一项长时间运行的任务。在您的情况下,它看起来像这样:
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIBackgroundTaskIdentifier __block bgTask = nil;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
这样您就可以告诉应用程序在您完成后停留 10 分钟。在十分钟结束时调用过期处理程序。
此外,您可以设置所需的后台模式键以获得更多时间。有许多技巧和变体可以让您有更多时间使用我上面提到的东西。
关于ios - 在 applicationDidEnterBackground : 上调度保存操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212672/
我的问题很简单(我认为)。我有一个实现简单计时器的类(使用一些整数和 NSTimer)。我想关闭我的应用程序(因此进入后台模式),但我希望我的计时器仍然继续计数。我该如何管理? 非常感谢! 最佳答案
我正在编写一个非常简单的聊天应用程序,并且想知道如何在应用程序进入后台时暂停长轮询选择器。 目前,我有一个 Chatroom 类(一个 UIView),它像这样处理长轮询: -(void)startP
我有一个 iOS 游戏,我在其中跟踪玩家在 session 中玩的级别数。一个 session 对应于用户在主屏幕上按下应用图标和按下主页按钮离开应用之间的时间段。 令人惊讶的是,我的大部分用户似乎都
我的应用程序处理敏感数据,我希望用户进入后台后 View 上显示的数据就完全隐藏。我试图通过将一个 View 放在所有其他 View 之上来实现此目的: [self.window addSubview
我将它放在我的 ViewController.m 文件中,当我的应用程序进入后台时,永远不会调用 NSLog。 谁能解释一下为什么? - (void)applicationDidEnterBackgr
我想将我的应用程序发送到后台,只需单击我的应用程序中的按钮即可。有什么方法可以手动或以任何其他方式调用 applicationdidenterbackground 吗? 最佳答案 iOS Human
我正在开发一个应用程序,并且在 IOS 版本中,每当发生外部事件时,例如主页按钮或应用程序中的来电都会显示其密码输入屏幕,因为它显示敏感数据。 我正在尝试在 android 中复制它,但我遇到了麻烦,
我想取消该方法,当用户按下“HOME”按钮时请求用户确认,在 iPhone 上,该按钮将进入后台执行。 如果用户接受,则进入后台执行,如果不接受,我不做任何事情。 我查看了论坛、Apple 的文档,但
我无法更改值或更改声明的任何变量或对象。任何人都可以看到有什么问题吗? 在我的应用委托(delegate)方法中。 - (void)applicationDidEnterBackground:(UIA
我正在创建一个在主线程上执行一些任务的简单应用程序。我在 NSLog 中打印进程,因此我可以了解我的进程是否正在运行。 现在,当我在没有启动进程的情况下按下主页按钮时(进程将在我点击按钮时启动)应用程
我试图跟踪用户何时在线或离线。我试图通过每当打开应用程序以及每当使用以下代码关闭应用程序时更新解析服务器中的用户对象来实现此目的。 func applicationWillEnterForegrou
我有一个 iphone 应用程序。所以我加载和解析 HTML 数据,仅此而已。但是当应用程序进入后台时,我想更新现场比赛的结果并显示像这样的警报下图: 那我该怎么做呢?有通知吗?对不起我的英语不好。
当我关闭我的应用程序时,我触发了 applicationDidEnterBackground 中的代码,该代码从服务器下载一些数据。在某些情况下,这最多可能需要一分钟。如果用户在此期间重新打开应用程序
applicationDidEnterBackground 及相关方法非常有用吗?我通过阅读Apple的指南知道这些方法的含义,但我没有iPhone,我不知道后台应用程序会被系统关闭是否常见。 特别是
我正在尝试在应用程序进入后台时安排一堆通知。以下代码在 iPhone 模拟器中运行良好... - (void)applicationDidEnterBackground:(UIApplication
我想发送一个时间戳到远程服务器,并等待成功的回调,然后将时间戳存储在本地,如果远程服务器没有响应。 我可以将它放入 applicationDidEnterBackground 实现中吗? 最佳答案 根
昨天,我问过,因为我的后台定时器有问题,我找到了一个解决方案让它工作,但现在,当我的应用程序进入后台时我遇到了问题。 在后台运行: backgroundTaskIdentifier = UIAppli
Apple 的文档"App States and Multitasking" (“移动到后台时要做什么”部分)说当应用程序进入后台时保存: Save user data and app state i
这是关于iOS7上的iOS应用程序。 当一个事件的应用程序从多任务显示中被杀死时,我意识到 appDelegate 方法“applicationDidEnterBackground”似乎被调用了两次。
我希望在应用程序变为非事件状态时完全重置它。 我不想保留任何状态,有没有简单的方法可以做到这一点? 这会在后台方法中完成吗?或应用程序委托(delegate)中的任何其他状态方法? 最佳答案 我建议通
我是一名优秀的程序员,十分优秀!