Использовать один обработчик для двух действий в Android? - PullRequest
0 голосов
/ 07 ноября 2018

В моем приложении 2 действия, скажем ActivityOne и ActivityTwo, и третий класс, который выполняет некоторую работу в фоновом режиме, скажем WorkerClass. WorkerClass отправляет Message в поток пользовательского интерфейса, используя Handler.

ActivityOne интересуется одними сообщениями, ActivityTwo интересуется другими, но они оба запускаются в основном потоке. Можно ли определить один Handler экземпляр, который будет удовлетворять обоим действиям в главном потоке?

Пока я думаю создать два экземпляра Handler, один для ActivityOne, а другой для ActivityTwo. WorkerClass будет отправлять сообщения каждому действию через эти 2 экземпляра обработчика.

В коде это будет:

class ActivityOne extends Activity{
 Handler mHandler = new Handler( (message) -> makeChangesToLocalActivity(message) )
}


class ActivityTwo extends Activity{
         Handler mHandler = new Handler( (message) -> makeChangesToLocalActivity(message) )
}

class WorkerClass{
 // Each activity will pass its local handler when using the WorkerClass
 Handler mActivityOneHandler,mActivityTwoHandler;
}

Это нормально, если WorkerClass содержит два разных обработчика, которые оба подключены к одному и тому же потоку (UI)? Это не выглядит хорошо, но это было все, что я мог придумать.

...