我需要有关后台同步一些建议......iOS同步在后台线程
目前,我有应用程序启动后在后台这将启动同步,然后应用程序通过定时器继续每2分钟。现在我想让用户在不耐烦的情况下手动启动同步过程......但确保当前没有正在运行的同步。
如果有同步正在运行,则用户请求应该“重定向到”该同步,如果不是,则应启动新的同步,但防止在手动同步正在进行时启动自动同步。
不幸的是我没有对如何做到这一点的想法....
THX对您有所帮助!
BR鲍里斯
我需要有关后台同步一些建议......iOS同步在后台线程
目前,我有应用程序启动后在后台这将启动同步,然后应用程序通过定时器继续每2分钟。现在我想让用户在不耐烦的情况下手动启动同步过程......但确保当前没有正在运行的同步。
如果有同步正在运行,则用户请求应该“重定向到”该同步,如果不是,则应启动新的同步,但防止在手动同步正在进行时启动自动同步。
不幸的是我没有对如何做到这一点的想法....
THX对您有所帮助!
BR鲍里斯
你不给你是如何试图做到这一点的细节,但一个简单的解决方案应该是这样:
一个标志添加到您的控制器:isAlreadySyncing
;
当你开始同步时,设置标志;完成后重置;
当用户开始同步不耐烦时,检查标志:如果它是真的,不要做任何事;否则,开始同步(并设置标志,如上);
当您的计时器触发并尝试同步时,请检查该标记:如果设置了,则不要执行任何操作。
希望这会有所帮助。
我想你有不同的控制器。 你需要做的是使用NSUserDefaults。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"YES" forKey:@"is_sync_auto"];
[defaults setValue:@"NO" forKey:@"is_sync_manual"];
[defaults synchronize];
当用户开始同步出不耐烦,检查默认值:如果是YES,没有做任何事情;否则,开始同步(并且如上所述设置标志)。
要重定向请求,您可以创建一个共享实例,然后再次调用它。
或
更好的办法是创建一个单例类。 让这个单例类处理同步操作,如果不再有一个实例可以创建,它将解决您的问题。
+ (instancetype)sharedConnection {
static ConnectionClass *_sharedConnection = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_shared_sharedConnection = [[ConnectionClass alloc] init];
});
return _sharedConnection;
}