私は最近、これを行う方法を学びました。ここに良いチュートリアルがあります:
http://www.vogella.com/articles/AndroidPerformance/article.html#handler
最初は少しトリッキーです。メイン スレッドで実行し、サブスレッドを開始して、メイン スレッドにポスト バックします。
何が起こっているかを確認するために、ボタンのオンとオフを点滅させるこの小さなアクティビティを作成しました。
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
Button b1;
Button b2;
Handler myOffMainThreadHandler;
boolean showHideButtons = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myOffMainThreadHandler = new Handler(); // the handler for the main thread
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
}
public void onClickButton1(View v){
Runnable runnableOffMain = new Runnable(){
@Override
public void run() { // this thread is not on the main
for(int i = 0; i < 21; i++){
goOverThereForAFew();
myOffMainThreadHandler.post(new Runnable(){ // this is on the main thread
public void run(){
if(showHideButtons){
b2.setVisibility(View.INVISIBLE);
b1.setVisibility(View.VISIBLE);
showHideButtons = false;
} else {
b2.setVisibility(View.VISIBLE);
b1.setVisibility(View.VISIBLE);
showHideButtons = true;
}
}
});
}
}
};
new Thread(runnableOffMain).start();
}
private void goOverThereForAFew() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}