0

我经常使用 Handlers 来发布延迟线程、调度 UI 线程等。

想象一下 Activity A1 的视图 mV1、mV2 和一个线程:

class A1 extends Activity {

     LightView mV1;
     UltraComplexView mV2;
     Handler mHandler;

     private Runnable oneSecondTimerRunnable() {
          Log.d(TAG, "One second more");

          mHandler.postDelayed(oneSecondTimerRunnable, INTERVAL); // 1st way
          mV1.postDelayed(oneSecondTimerRunnable, INTERVAL);      // 2nd way
          mV2.postDelayed(oneSecondTimerRunnable, INTERVAL);      // 3rd way
     }
}

问题:

  • 每个视图都有自己独立的处理程序吗?他们有关系吗?一个处理程序是否可以在另一个空闲时重载(例如:LightView<>ultraComplexView)

  • 那么使用视图的处理程序来发布与视图不真正相关的东西是否有意义,只是因为该处理程序目前可供您使用,而不是创建您自己的处理程序来处理您的业务?

我问是因为 Handler 似乎是一个非常复杂的类,与系统线程、looper 等密切相关。所以如果其中一些已经被实例化了,为什么不使用它们呢?

4

1 回答 1

0

我经常在 Activity 中使用 Handler 来覆盖 handleMessage,这比使用 Runnables 好得多,根据我的观察,大约 95% 的人使用那个讨厌的 Runnables

于 2013-06-18T21:10:49.467 回答