Android Developers:スレッドで実行するコードを指定


このコースでは、Runnalbeクラスを個別のスレッドで実行する方法を示します.run()メソッドのコード.Runnableを他のオブジェクトに渡し、スレッドに接続して実行することもできます.1つまたは複数の特定の操作を実行するRunnableオブジェクトは、ある場合、1つのタスクと呼ばれます. 
 
ThreadもRunnablも基礎クラスであり、それら自身によって限られた能力しかない.逆に、HandlerThread、AsyncTask、IntentServicesなどの強力なAndroidクラスの基礎です.ThreadとRunnableもThreadPollExecutorクラスの基礎です.このセクションでは、クラスがスレッドとタスクキューを自動的に管理し、複数のスレッドを並列に実行することもできます. 
 
Runnableを実装するクラスを定義する
———————————————————————————————————————————————————————————————— 
Runnalbeを実装したクラスを実装するのは簡単です.例:
public class PhotoDecodeRunnable implements Runnable { 
    ... 
    @Override 
    public void run() { 
        /* 
         * Code you want to run on the thread goes here 
         */ 
        ... 
    } 
    ... 
} 

run()メソッドの実装
 
———————————————————————————————————————————————————————————————— 
このクラスではrun()メソッドには、実行されるコードが含まれます.通常、何事もRunnableで許可されます.このRunnableはこのUIスレッドで実行されていないので、ViewオブジェクトなどのUIスレッドオブジェクトを直接変更することはできません.UIスレッドと通信するには、Communicate with the UI Threadコースで説明されているテクノロジーを使用する必要があります.   
run()メソッドの開始にTHREAD_を使用することによりPRIORITY_BACKGROUNDはプロセスを呼び出す.setThreadPriority()メソッドを使用して、スレッドが使用するバックグラウンド優先度を設定します.この方式はRunnableオブジェクトのスレッドとUIスレッドとの間のリソース競合を低減する.   
このRunnable自身にもRunnableオブジェクトのスレッドの参照を保存し、Theadを呼び出す必要があります.CurrentThread()メソッド.   
次のコードクリップは、run()メソッドを設定する方法を示します.
class PhotoDecodeRunnable implements Runnable { 
... 
    /* 
     * Defines the code to run for this task. 
     */ 
    @Override 
    public void run() { 
        // Moves the current Thread into the background 
        android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); 
        ... 
        /* 
         * Stores the current Thread in the the PhotoTask instance, 
         * so that the instance 
         * can interrupt the Thread. 
         */ 
        mPhotoTask.setImageDecodeThread(Thread.currentThread()); 
        ... 
    } 
... 
}