Androidでインタフェースをリフレッシュする2つの方法
1686 ワード
Handlerによるインタフェースのリフレッシュ
Handlerオブジェクトをインスタンス化し、handleMessageメソッドを書き換えてinvalidate()を呼び出してインタフェースのリフレッシュを実現します.一方,スレッドではsendMessageを介してインタフェース更新メッセージを送信する.
postInvalidate()を使用してインタフェースをリフレッシュする
postInvalidateを使用するのは簡単で、handlerを必要とせず、直接スレッドでpostInvalidateを呼び出せばいいです.
class GameThread implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }//postInvalidateを使用すると、スレッド内で直接インタフェースmGameViewを更新できます.postInvalidate(); } } }
Handlerオブジェクトをインスタンス化し、handleMessageメソッドを書き換えてinvalidate()を呼び出してインタフェースのリフレッシュを実現します.一方,スレッドではsendMessageを介してインタフェース更新メッセージを送信する.
// onCreate()
new Thread(new GameThread()).start();
// handler
Handler myHandler = new Handler() {
//
public void handleMessage(Message msg) {
switch (msg.what) {
case Activity01.REFRESH:
mGameView.invalidate();//
break;
}
super.handleMessage(msg);
}
};
class GameThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = Activity01.REFRESH;
//
Activity01.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
postInvalidate()を使用してインタフェースをリフレッシュする
postInvalidateを使用するのは簡単で、handlerを必要とせず、直接スレッドでpostInvalidateを呼び出せばいいです.
class GameThread implements Runnable { public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }//postInvalidateを使用すると、スレッド内で直接インタフェースmGameViewを更新できます.postInvalidate(); } } }