14

ハンドラーがランナブルを投稿する理由を誰かが説明できますか? handleMessage のオーバーライドとメッセージの送信は同じことを行いますか?

これら 2 つの方法がどのように実装されるかを示すために、未テストのコードをいくつか書きました。私のアプローチが間違っている場合は、修正してください。

ポストを持つハンドラー:

handler.post(new Runnable() {
    @Override
    public void run() {
        imageView.doSomething();
    }
 });

handleMessage を持つハンドラー:

final Handler handler = new Handler() {
     @Override
     public void handleMessage(Message message) {
         imageView.doSomething();
     }
 };

handler.sendMessage(message);
4

1 に答える 1

11

どちらのコード スニペットも同じように機能します。通常、 Handlerオブジェクトについて何も知らなくてもUI スレッドでコードを実行する場合は、 Handler.postRunnableを使用します。UI Threadで任意のコードを実行する必要がある多くの場合、これは理にかなっています。

ただし、場合によっては、UI スレッドに送信される内容を整理し、 sendMessageを使用してそのように実行する特定の機能を持たせたい場合があります。

どちらか一方を他方の上に使用してもパフォーマンスが低下するとは思いません。自分に合っていると思うものを使用するかどうかは、あなた次第です。

于 2013-06-16T11:28:48.813 に答える