如何处理后台任务?
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];
我认为这应该可行 - 试一试!
【讨论】:
以上是关于如何处理后台任务?的主要内容,如果未能解决你的问题,请参考以下文章