2016-09-16 5 views
0

Swift 2.0のiOSアプリケーションから、バックグラウンドスレッドでサーバーからのデータを要求しながら、カスタムスピナーアノテーションを表示します。 データを取得してsqliteデータベースを更新するとすぐに、スピナーがフリーズし始めます(すべてのクエリを処理するために約15秒)。 XCodeでは、デバイスcpuは95〜100%のアクティビティを示します。 私はGRAND CENTRAL DISPATCHをさまざまな方法で使用しようとしましたが、スピナーアニメーションをフリーズせずに動作させる方法を見つけませんでした。 これをどのようにスローすることができますか? ありがとうございます!iOS UIスピナーがバックグラウンドスレッドを処理中にフリーズする

私は、全体のコードを投稿することはできませんが、それは次のようになります。

//Using the spinner here https://github.com/icanzilb/SwiftSpinner 

Spinner.show("Please wait", animated: true) 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) 
{ 

    //around 5 seconds to get data 
    var data = getDataFromServer() 

    //around 20 sec to process and save the data in sqlite. It stops spinning from here.. 
    saveDataInDB(data) 

} 
+1

コードを投稿してください。 – anhtu

+0

'saveDataInDB'が何をしているのかを表示できますか?メインスレッドで重い処理をしているようです。 – Kamchatka

+0

私は質問を更新し、要求どおりにコードを入力しました。 – Philiz

答えて

0

私はバグを発見しました。 saveDataInDB()では、コールバックを受け取ったときに実行スレッドを変更するOAuthSwiftのリクエストを行っています。それはメインスレッド上にジャンプし、dbクエリはメインスレッド上で実行されます。この問題の新しい質問をここで開けました:OAuthSwift request callback on main thread

関連する問題