我需要有關後臺同步一些建議......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;
}