Android Developers:スレッドで実行するコードを指定
1986 ワード
このコースでは、Runnalbeクラスを個別のスレッドで実行する方法を示します.run()メソッドのコード.Runnableを他のオブジェクトに渡し、スレッドに接続して実行することもできます.1つまたは複数の特定の操作を実行するRunnableオブジェクトは、ある場合、1つのタスクと呼ばれます.
ThreadもRunnablも基礎クラスであり、それら自身によって限られた能力しかない.逆に、HandlerThread、AsyncTask、IntentServicesなどの強力なAndroidクラスの基礎です.ThreadとRunnableもThreadPollExecutorクラスの基礎です.このセクションでは、クラスがスレッドとタスクキューを自動的に管理し、複数のスレッドを並列に実行することもできます.
Runnableを実装するクラスを定義する
————————————————————————————————————————————————————————————————
Runnalbeを実装したクラスを実装するのは簡単です.例:
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()メソッドを設定する方法を示します.
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());
...
}
...
}