作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 delphi berlin 下。我的应用程序在后台监听位置更新。当他们在后台进行位置更新时,我需要将数据发送到服务器,但正如我在互联网上阅读的那样,我需要在 UIBackgroundTask
中执行此操作,否则应用程序将在后台再次进入数据实际发送。知道如何在 delphi 下执行此操作吗?
最佳答案
下面是一些可以帮助您入门的代码:
uses
Macapi.ObjectiveC, iOSapi.Foundation, iOSapi.CocoaTypes, iOSapi.UIKit;
const
UIKitFwk: string = '/System/Library/Frameworks/UIKit.framework/UIKit';
type
TBackgroundTaskHandler = procedure of object;
// Fills in methods missing in Delphi
UIApplication = interface(UIResponder)
['{8237272B-1EA5-4D77-AC35-58FB22569953}']
function beginBackgroundTaskWithExpirationHandler(handler: TBackgroundTaskHandler): UIBackgroundTaskIdentifier; cdecl;
procedure endBackgroundTask(identifier: UIBackgroundTaskIdentifier); cdecl;
end;
TUIApplication = class(TOCGenericImport<UIApplicationClass, UIApplication>) end;
function SharedApplication: UIApplication;
begin
Result := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication);
end;
function UIBackgroundTaskInvalid: UIBackgroundTaskIdentifier;
begin
Result := CocoaIntegerConst(UIKitFwk, 'UIBackgroundTaskInvalid');
end;
当您的应用收到位置更新时,您可以调用电话:
TaskID := SharedApplication.beginBackgroundTaskWithExpirationHandler(DoExpiry);
其中 DoExpiry 是您定义的一种方法,用于在操作系统指示您的任务时间已过期时进行处理。根据 UIBackgroundTaskInvalid 检查结果。
当你的任务完成后,调用:
SharedApplication.endBackgroundTask(TaskID);
关于ios - 如何创建一个 UIBackgroundTask 以在应用程序处于后台时发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45154421/
每当需要完成任务时,我都会在应用程序的许多地方使用 beginBackgroundTaskWithExpirationHandler,并在任务结束时执行 endBackgroundTask。在我的代码
我在 delphi berlin 下。我的应用程序在后台监听位置更新。当他们在后台进行位置更新时,我需要将数据发送到服务器,但正如我在互联网上阅读的那样,我需要在 UIBackgroundTask 中
我的代码: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ @aut
我是一名优秀的程序员,十分优秀!