LoginSignup
15
16

More than 5 years have passed since last update.

UIから重い処理をする場合のプログラミング比較(C#, Android Java, iOS Swift)

Last updated at Posted at 2015-01-06

Android Java

public void onClick(View v) {
    new HeavyWorkTask().execute();
}
private class HeavyWorkTask extends AsyncTask<Void, Void, Void> {
    void onPreExecute() { doPreWorkInUIThread(); }
    /** The system calls this to perform work in a worker thread and
    * delivers it the parameters given to AsyncTask.execute() */
    protected void doInBackground() { doHeavyWork(); }
    /** The system calls this to perform work in the UI thread and delivers
    * the result from doInBackground() */
    void onPostExecute() { doPostWorkInUIThread(); }
}

iOS Swift

@IBAction func onClick(sender: AnyObject) {
    let qualityOfServiceClass = QOS_CLASS_BACKGROUND
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
    doPreWorkInUIThread()
    dispatch_async(backgroundQueue, {
        doHeavyWork()
        dispatch_async(dispatch_get_main_queue(), 0), {
            doPostWorkInUIThread()
        })
    })
}

C#

public async void onClick(object sender, EventArgs e) {
    doPreWorkInUIThread();
    await Task.Run({ () => doHeavyWork(); });
    doPostWorkInUIThread();
}

まとめ

もっとも流れるように書けるのは、async/awaitパターンを有しているC#ちゃん!
Android JavaとかiOS Swiftはちょっち野暮ったいっすね^w^

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16