Я пытался реализовать фоновую нить в своем приложении, чтобы выполнять длительную загрузку с использованием трансплантата.
Я использую FBConnect SDK, и он работает отлично, но я хотел быдля обеспечения бесперебойной работы графического интерфейса, и в настоящий момент в приложении имеется заметная пауза перед началом загрузки.
В настоящий момент происходит добавление задания загрузки в очередь, а затем запуск «startQueue».".
Это берет первое задание из очереди, изменяет размер изображения и начинает загрузку до Facebook.
Это только в тот момент, когда выполняется запрос URL, он запускаетсяработает в своем собственном потоке, и я возвращаю контроль над графическим интерфейсом.
Мне бы хотелось иметь возможность добавить задание в очередь, а затем запустить "startQueue" в отдельном потоке.Это немедленно вернуло бы мне контроль над графическим интерфейсом.
Происходит следующее: я сразу возвращаю графический интерфейс и размер изображения изменяется в новой теме), и начинается загрузка в Facebook (также в новой теме).) но тогда ничего.
Есть ли какое-то ограничение относительно того, что можно и нельзя делать в этом дочернем потоке?Разрешены ли URL-соединения?Похоже, что в телефоне нет ошибок, и я могу продолжить добавление заданий в очередь без проблем, но первоначальная загрузка просто не завершается.
метод init создает поток ...
bgThread = [[NSThread alloc] initWithTarget:self selector:@selector(startQueue) object:nil];
Затем метод добавления задания запускает его ...
[bgThread start];
, затем он работает так ...
-(void)startQueue
{
running = TRUE;
bgPool = [[NSAutoreleasePool alloc] init];
[self startJob];
}
-(void)startJob
{
NSDictionary *currentJob = [NSDictionary dictionaryWithDictionary:[jobQueue objectAtIndex:0]];
NSArray *networks = [currentJob objectForKey:@"networks"];
NSLog(@"Resizing image");
NSLog(@"Starting Uploads");
for (int i = 0; i < [networks count]; i++)
{
NSString *networkName = [networks objectAtIndex:i];
if ([networkName isEqualToString:@"Facebook"])
{
NSLog(@"Facebook");
currentUploads += 1;
[self.fbDelegate uploadPhoto:uploadImage withCaption:[currentJob objectForKey:@"caption"]];
}
}
}
Без использования потока (т.е.просто запускаю startJob) все работает отлично.Когда я вызываю bgThread start, он работает отлично, и я получаю NSLog на Facebook, но работа никогда не заканчивается.Это даже не заканчивается с ошибкой.
Спасибо за любые указатели или советы, которые вы можете предоставить!
Оливер