我正在尝试使用基于肥皂的 Web 服务运行图像上传,并且这样做我在我的应用程序中面临 2 个关键问题。
问题 1:-当应用程序将多个图像上传到服务器时,如果我的应用程序进入后台状态,那么我的应用程序将停止执行(application suspended state)
。当我的应用程序从后台返回到前台状态时,它会再次恢复我的后台线程。
问题 2:-当我尝试从设备库在服务器上上传 160-170 张图像时。在服务器上上传 60-70 张图像后,我收到了内存警告。我处理该方法并尝试在应用程序中释放一些内存,然后我再次启动我的线程,当时我的应用程序崩溃了。//->> 对于第二期,我添加了 3 个不同的 Web 服务及其太长的代码,所以我不打算在这里分享。当我检查仪器时,它通常以最大 2 到 2.5 MB 的实时字节运行,但是当我上传线程时,它会逐渐增加,并且在某个选择点我收到了内存警告。我的代码包含 ARC 的功能,但我仍然遇到内存警告问题。
问题1的代码:-
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
{
backgroundSupported = device.multitaskingSupported;
}
//NSLog(@"backgroundSupported: %d", backgroundSupported);
if (backgroundSupported)
{
_IsBackground = TRUE;
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:
^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),
^{
while (_IsBackground)
{
//// it contineous run my application within this state.
}
NSLog(@"Background loop ended");
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
}