标签: background-task

Windows Phone 8.1后台任务在完成之前关闭

我的后台任务需要很长时间才能完成,操作系统正在扼杀它.我正在尝试在线同步我的联系人,这是我正在做的事情:

  1. 从电话簿获取所有联系人(需要约1秒)

  2. 将它们上传到服务器(约2秒)

  3. 从服务器检索所有联系人(~2-3秒)

  4. 从ContactStore中删除所有联系人(ContactStore.DeleteAsync有时需要1分钟才能完成)

  5. 创建一个ContactStore并导入所有联系人)(1000个联系人约1-2分钟)

我有~100个联系人并且它运行良好,但我想测试~1000个联系人,并且每次都没有完成.我正在使用MaintenanceTrigger,但我认为它对于后台任务来说仍然太多了,但我需要对此进行确认.应该允许MaintenanceTrigger任务执行更多资源密集型任务,那么为什么操作系统会终止我的后台任务呢?

c# windows-phone windows-phone-8.1 background-task

5
推荐指数
1
解决办法
327
查看次数

无法启动beginBackgroundTask swift 3

抱歉,我被卡住了,但是我正在尝试启动后台任务(XCode8,迅速3)

来自此处的示例: https : //developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

在AppDelegate.swift中:

func applicationDidEnterBackground(_ application: UIApplication) {
    var bgTask: UIBackgroundTaskIdentifier = 0;
    bgTask = application.beginBackgroundTask(withName:"MyBackgroundTask", expirationHandler: {() -> Void in
        print("The task has started")
        application.endBackgroundTask(bgTask)
        bgTask = UIBackgroundTaskInvalid
    })
}
Run Code Online (Sandbox Code Playgroud)

该应用程序从未显示“任务已开始”消息。我究竟做错了什么?

ios swift background-task

5
推荐指数
2
解决办法
4692
查看次数

如何在上次重试 Celery 任务时执行一些代码

我正在使用 Django 和 Celery 来运行我的后台任务。我有一个任务可能会因某些 IO 原因而失败:

@shared_task(bind=True)
def mytask(self, someargs):
  try:
    do_some_io_operation()
  except SomeException as e:
    self.retry(max_retries=5)

  # do some other stuff

Run Code Online (Sandbox Code Playgroud)

我只想在最后一次重试失败时执行一些代码并退出函数而不引发异常。是否可以?

django celery background-task

4
推荐指数
1
解决办法
1428
查看次数

不久后,远程通知的后台任务暂停

我正在使用具有content-available:true标志的远程通知,以在无提示推送通知时在后台启动应用程序,并处理或从远程API获取更新。当应用程序处于前台状态或上次运行后处于挂起状态时,代码可以正常执行。

在后台测试期间,当系统根据传入的静默推送通知启动应用程序时,仅对代码进行了部分处理,并且在大约150毫秒后迅速将其挂起。我希望该应用程序将有30秒的时间来处理传入的通知及其有效负载。如果需要更多时间来处理和/或获取新数据,是否需要调整应用程序功能或请求后台任务?

部署目标iOS 8,在iOS 9上进行测试.Xcode 7.3.1,Swift 2.2.1。

功能:启用后台模式,模式:启用远程通知

AppDelegate

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    if let userInfo = userInfo as? [String: AnyObject] {

        // Processing of the payload is done in separate Operation class (using Operations framework)
        // The completion handler is called on the end of the processing/fetching in that operation
        // But in case of launching the app in the background it never reaches the call of the completion …
Run Code Online (Sandbox Code Playgroud)

push-notification ios background-task

3
推荐指数
1
解决办法
1552
查看次数

无法在backgroundTask上调用Task.Run()

我想在后台任务的线程中做一些事情,所以我尝试使用Task.Run()但它不起作用.

任何人都可以告诉我另一种在后台任务中创建线程的方法.

这是我的代码:

   public sealed class KatzBackgroundTask : IBackgroundTask
   {

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
        string content = notification.Content;
        System.Diagnostics.Debug.WriteLine(content);
        testLoop();
    }

    async void testLoop()
    {
        await Task.Run(() =>
       {
           int myCounter = 0;
           for (int i = 0; i < 100; i++)
           {
               myCounter++;
                //String str = String.Format(": {0}", myCounter);
                Debug.WriteLine("testLoop runtimeComponent : " + myCounter);
           }
       }
       );

    }
}
Run Code Online (Sandbox Code Playgroud)

当我删除await Task.Run()for循环可以正常运行,但是当我不删除它时,for循环无法运行.

c# background-task windows-10-mobile uwp

3
推荐指数
1
解决办法
516
查看次数

UWP BackgroundTask关于应用程序更新

我有一个简短的问题,如果我更新包含BackgroundTask的App,更新后是否需要注销并重新注册任务?我已经体验到在某些用户的设备上进行更新后,BackgroundTask将不再起作用,并且用户必须禁用并再次启用它。我在msdn文档中看到一个“ ServicingComplete” BackgroundTask,应在应用程序更新后启动,因此在其中重新注册我的主BackgroundTask是否正确?还是在App更新后使简单的BackgroundTask达到100%的最喜欢的方法是什么?

c# win-universal-app background-task uwp

3
推荐指数
1
解决办法
418
查看次数

注册后台任务而不运行应用程序

tl; dr:如何在不运行应用程序的情况下注册后台任务?

长版:

我想在每次用户登录时注册后台任务SystemTriggerType.UserPresent.

我找到了有关注册任务的信息,但这是必须执行的代码.如果必须应用程序运行执行任务,那就没问题了.但是如何在运行应用程序的情况下注册任务?后台任务可以通过注册

var builder = new BackgroundTaskBuilder();
Run Code Online (Sandbox Code Playgroud)

然后

builder.Name = taskName;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
BackgroundTaskRegistration task = builder.Register();
Run Code Online (Sandbox Code Playgroud)

如上所述: 注册后台任务.

但正如我所说 - 我的问题是如何在应用程序执行之前运行此代码.

c# win-universal-app background-task uwp

3
推荐指数
1
解决办法
682
查看次数

我可以让Watch应用程序在后台运行吗?

我知道iOS允许运行后台任务,例如,继续接收位置更新,但是可以在手表应用程序中执行此操作吗?在Xcode 9.3中,我已经为"后台模式"和所选位置配置了我的应用程序,并且已经为WatchKitExtension创建了一个Info.plist,这是"应用程序寄存器用于位置更新"的"必需后台模式"条目.

但是我的手表应用程序在屏幕关闭时以及它在底座时仍会暂停.

但是,针对watchOS应用程序编程指南似乎排除了在后台运行以接收位置更新的可能性,因为它只允许对四类活动进行后台处理:

  1. 后台应用刷新任务.使用WKApplicationRefreshBackgroundTask对象来...
  2. 后台快照刷新任务.使用WKSnapshotRefreshBackgroundTask对象更新...
  3. 背景观察连接任务.使用WKWatchConnectivityRefreshBackgroundTask对象接收iOS应用程序发送的数据...
  4. 背景NSURLSession任务....

SO的其他帖子表明这是不可能的,但证明负面是困难的,所以我再问:

我试图让手表应用程序在后台运行以接收位置更新,或者Xcode正在做出WatchOS无法提供的承诺,从而"鞭打死马".

location background-task apple-watch watchkit watchos

3
推荐指数
1
解决办法
2729
查看次数

“BGAppRefreshTask”与“BGProcessingTask”理解时序

我试图理解Apple文档中处理\xe2\x80\x9c 需要几分钟 \xe2\x80\x9d 的过程,而刷新他们说的BGAppRefreshTask过程之间的区别和处理位置BGProcessingTask的 \xe2\x80\x9cshort 请求之间处理位置task.\xe2\x80\x9d 我正在 HealthKit 中迭代锻炼,这需要不到一分钟的时间,所以我应该使用 BGAppRefreshTask 吗?

\n

background ios swift background-task

3
推荐指数
1
解决办法
2488
查看次数

iOS 14 - 当精确位置权限被拒绝时,如何让 iBeacon 唤醒应用程序?

我\xe2\x80\x99m 之前在使用 iOS 14.0 时遇到了以下问题 - 通过后台位置权限我可以:

\n
    \n
  • 注册iBeacon区域监控
  • \n
  • 从应用程序切换器杀死该应用程序
  • \n
  • 点击屏幕即可看到应用程序在控制台中重新启动。
  • \n
  • 应用程序正在运行但不在应用程序切换器中
  • \n
\n

使用 iOS14 重新测试,没有精确的位置,我的应用程序不再因应用程序切换器终止而被唤醒。

\n

重新启用精确位置权限,一切都像以前一样。

\n

在没有精确位置权限的情况下,我需要做什么才能让后台应用程序唤醒 iBeacon 区域?

\n

或者

\n

如何检测缺少精确位置权限并通知用户应用程序将无法按预期运行?

\n

ios14精确权限缺失

\n

cllocationmanager ibeacon region-monitoring background-task ios14

3
推荐指数
1
解决办法
2398
查看次数