Я хочу сделать простое приложение для Android, которое должно выполнять тяжелую работу в фоновом режиме. Я совершенно новичок в разработке для Android и мне нужен совет о том, как правильно разработать это приложение. Итак, мое приложение должно запускать сервер в фоновом режиме, который принимает клиента и постоянно обменивается данными с клиентом, пока пользователь не решит остановить сервер. У меня есть простое действие, которое имеет кнопку, которая должна запускать и останавливать сервер. Мои нынешние мысли:
- Нажатие кнопки должно запустить службу
- Служба должна запустить отдельный поток, который будет выполнять всю работу сервера.
Я думаю, что я должен создать три класса:
Activity
класс,
Service
класс (попросить систему запустить передний план
Service
, чтобы процесс не был убит, если пользователь закроет Activity), и класс
Server
который может быть
Thread
или
AsyncTask
. Проблема заключается в том, что в потоке сервера могут происходить некоторые события, о которых должен знать пользователь, поэтому эти события должны вызывать некоторые изменения в пользовательском интерфейсе, например показ сообщения. Я мог бы уведомить пользователя, манипулируя пользовательским интерфейсом в методе
onProgressUpdate()
или
runOnUiThread()
, но это не так. Более того, я считаю, что это нарушает принцип единой ответственности, поскольку Сервер выполняет работу, которая не ожидается. Может быть, мне следует как-то уведомить
Service
, который, в свою очередь, сделает всю работу по уведомлению пользователя? Более того, мне нужно как-то управлять сервером из пользовательского интерфейса. Так что просто позвонить на
Service
и забыть об этом - не вариант. Итак, мой вопрос, как сделать хороший дизайн приложения? Как компоненты должны взаимодействовать друг с другом?