Я сделал приложение для IOS, в котором я использую базу данных sqlite, база данных является локальной в приложении. Теперь я дал функциональность, чтобы приложение загружало данные из Интернета, помещало их в локальную базу данных и показывало пользователю. Я дал эту функциональность на - (void)viewDidLoad
, так что, когда приложение загружает данные, оно перестает работать до тех пор, пока не завершит загрузку части, поскольку этому пользователю нужно подождать, чтобы взаимодействовать с приложением.
Теперь я хочу, чтобы поток работал в фоновом режиме приложения, которое будет подключаться к Интернету и обновлять приложение, не мешая пользователю. пожалуйста, помогите мне.
Мой код загрузки и сохранения изображения таков:
-(void)Download_save_images:(NSString *)imagesURLPath :(NSString *)image_name
{
NSMutableString *theString = [NSMutableString string];
// Get an image from the URL below
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:NSURL URLWithString:imagesURLPath]]];
NSLog(@"%f,%f",image.size.width,image.size.height);
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// If you go to the folder below, you will find those pictures
NSLog(@"%@",docDir);
[theString appendString:@"%@/"];
[theString appendString:image_name];
NSLog(@"%@",theString);
NSLog(@"saving png");
NSString *pngFilePath = [NSString stringWithFormat:theString,docDir];
NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
[data1 writeToFile:pngFilePath atomically:YES];
NSLog(@"saving image done");
[image release];
// [theString release];
}
когда я отлаживаю приложение, я вижу, что мое приложение занимает больше времени в строке ниже:
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:NSURL URLWithString:imagesURLPath]]];