簡體   English   中英

后台線程中的iOS同步

[英]iOS Sync in background thread

我需要有關后台同步的一些建議...

目前,我有一個應用程序,該應用程序啟動后會在后台開始同步,然后每2分鍾通過計時器繼續運行。 現在,我希望使用戶能夠在不耐煩的情況下手動啟動同步過程...但是請確保當前沒有正在運行的同步。

如果正在運行同步,則如果不啟動新的同步,則應將用戶請求“重定向”到此同步,但應防止在進行手動同步時啟動自動同步。

不幸的是我對如何做到這一點一無所知。

謝謝您的幫助!

鮑里斯(BR Boris)

您沒有提供有關如何執行此操作的詳細信息,但是一個簡單的解決方案應該是:

  • 向您的控制器添加一個標志: isAlreadySyncing ;

  • 開始同步時,設置標志; 完成后將其重置;

  • 當用戶出於急躁而開始同步時,請檢查該標志:如果為true,則不執行任何操作; 否則,開始同步(並如上所述設置標志);

  • 當您的計時器啟動並嘗試同步時,請檢查該標志:如果已設置,則不要執行任何操作。

希望這可以幫助。

我認為您有不同的控制器。 您需要使用NSUserDefaults。

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"YES" forKey:@"is_sync_auto"];
[defaults setValue:@"NO" forKey:@"is_sync_manual"];
[defaults synchronize]; 

當用戶出於急躁而開始同步時,請檢查默認值:如果是,則不執行任何操作; 否則,開始同步(並如上所述設置標志)。

要重定向請求,您可以創建一個共享實例,然后再次調用它。

要么

更好的方法是創建一個單例類。 讓那個單例類處理同步操作,由於不能創建一個以上的實例,它將解決您的問題。

+ (instancetype)sharedConnection {
    static ConnectionClass *_sharedConnection = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _shared_sharedConnection = [[ConnectionClass alloc] init];
    });

    return _sharedConnection;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM