2015-03-10 4 views
0

В настоящее время я разрабатываю приложение для своего проекта Computing. Проще говоря, он собирает информацию через сеанс SSH с компьютера и отображает использование ЦП и т. Д.Android - Модульный дизайн приложения

Я хотел бы добавить возможность иметь несколько подключений в самом приложении, но я хочу, чтобы это было настроить так, чтобы пользователь мог добавлять/удалять соединение, когда захочет, и переключаться между ними. Я хотел бы настроить его так, чтобы все соединения могли быть активны сразу (возможно, максимум 8), чтобы можно было осуществлять фоновый мониторинг.

Я не уверен, как я мог бы сделать свое приложение «модульным» таким образом. Любые идеи были бы замечательными! : D У меня он настроен с 1 соединением, работающим отлично сейчас, имея несколько соединений, добавит гораздо больше пользы в мое приложение.

Если вы хотите взглянуть на мой код, у меня есть его копия на GitHub. Это более старая версия, но код в основном такой же. My ssh class

Спасибо!

+0

Я не уверен, что это считается «Неясным, что вы просите» или «слишком широким», но одним из них наверняка. – wvdz

ответ

1

Порядок сортировки: Использовать очереди для соединения тем.

У вас есть, скажем, 9 входных потоков. 8 из источников SSH и один из ваших пользователей. Общий подход для этого - использование потоков. (возможно, есть еще один подход с java-каналами, java.nio.channels, которые имеют обратные вызовы). Каждый поток должен иметь вход и выход независимо от того, что происходит на других. Таким образом, вам нужна какая-то очередь сообщений, которая подается в каждый поток. Таким образом, остальная часть приложения может успешно работать, несмотря на блокировку потока.

Пользовательский интерфейс Android, как и большинство интерфейсов пользовательского интерфейса, «однопоточный». Когда интерфейсы пользовательского интерфейса говорят, что они «однопоточные», они означают, что один поток используется для всего взаимодействия с пользовательским интерфейсом в вашем приложении. Таким образом, вам нужен способ сообщения между вашими потоками, которые делают ваш SSH и ваш поток, который выполняет ваш пользовательский интерфейс. В Android вы можете отправлять сообщения в поток пользовательского интерфейса. Другим подходом было бы сделать локальную трансляцию в приложении и при необходимости иметь слушателей. Еще одним подходом было бы использовать фреймворк сообщений, такой как Otto, который является глобальным пространством в вашем приложении, где каждое действие, или фрагмент и т. Д. Регистрируется для получения сообщений.

В вашем случае на данный момент я просто запускаю некоторые потоки Java, а затем вызываю сообщение «post», чтобы отправить сообщение обратно в некоторый вид.

Типичный пользовательский интерфейс представляет собой некоторый цикл, который получает вход UI и вызывает программный код. В Android его называют «петлителем». Вот статья так: https://developer.android.com/training/multiple-threads/communicate-ui.html и здесь более общего обсуждения статьи: http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/

Вы также можете просто хотите использовать «runOnUIThread», чтобы запустить любой код столовых с интерфейсом. Но, местная трансляция работает тоже хорошо.

Вдоль этой очереди очереди представляют собой классический подход к интеграции со смешными старыми технологиями, такими как мейнфреймы, которые делают глупые проекты, такие как ночные партии, а не немедленную обработку.