如何处理后台任务?

Posted

技术标签:

【中文标题】如何处理后台任务?【英文标题】:how to handle background task? 【发布时间】:2014-12-15 12:51:27 【问题描述】:

我是 ios 新手。 我正在尝试在uitableview中逐行实现上传数据。 为此,我正在使用后台任务。

使用以下代码。

-(void)MethodUploadBgTaskAssign
 
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
            NSString *responseString = [self MethodlblUploadClicked];
            dispatch_async(dispatch_get_main_queue(), ^(void)
                           
                              if([responseString isEqualToString:@"UploadSuccess"])
                               
                                  [self ReloadTblData];
                                  [self ContinueUploadData];
                               
                           );
        );


-(void) ReloadTblData
 
    if([dataArr count]>0)
    [dataArr removeObjectAtIndex:0];

     [uitblData reloadData];
  

 -(void) ContinueUploadData
 
    if((dataArr count]>0)
    [self  MethodUploadBgTaskAssign];
 

我的问题是在用空数据重新加载一些时间表后上传表中的数据 因为当时上传的所有数据。

我想在上传表格中的每个单元格后显示更新的用户界面。

对代码进行哪些必要的更改? 感谢您的帮助。

【问题讨论】:

你要实现延迟加载吗? 不,我正在尝试在第一个单元格中上传数据后在每个单元格中上传数据,删除该单元格并显示更新的 UI,然后继续上传第一行数据,直到完成所有行数据。 这个方法是在cell还是controller中实现的? 我在视图控制器中使用 uitableview 你在哪里实现了上面的方法?在 tableviewcell 或视图控制器中? 【参考方案1】:

在我看来,您好像在更新表格 - 但在错误的线程中(因此表格实际上似乎从未更新)。您需要使用 performSelectorOnMainThread 来更新 UI。

[self performSelectorOnMainThread:@selector(ReloadTblData:) // Update the table on the main thread
                       withObject:nil
                    waitUntilDone:NO];

我认为这应该可行 - 试一试!

【讨论】:

以上是关于如何处理后台任务?的主要内容,如果未能解决你的问题,请参考以下文章

离开 Activity 时 Android 如何处理后台线程?

当应用程序在后台并执行功能时,如何处理本地通知?

当应用程序不在后台运行时如何处理推送通知

JS如何处理后台获取的Timestamp?

前台如何处理后台返回的json数据

如何处理收到推送通知后恢复应用程序的情况