Как обосновать архитектуру программы Android BluetoothAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как обосновать архитектуру программы Android Bluetooth

Сообщение Anonymous »

Теперь мне нужно разработать программное обеспечение для Android, основная цель которого — подключение к другому устройству через Bluetooth BLE. Для этого я использую архитектуру MVVM. Однако у меня есть сомнения относительно того, должна ли служба находиться в верхней части репозитория или в нижней его части. Теперь я использую Kotlin Flow и поддерживаю некоторые потоки Kotlin в своем сервисе, а моя модель представления просто подписывается на них. Репозиторий просто предоставляет некоторые базовые методы, такие как getScanFlow(), ConnectToTargetDevice() и так далее. Служба вызывает этот метод для поддержания собственных потоков, например

Код: Выделить всё

// 1. scan
scanJob = serviceScope.launch {
withTimeoutOrNull(20000L) {
bluetoothRepository.getScanFlow(ScanSettings.Builder().build())
.catch { e ->
Log.e(TAG, "startBluetoothManagement: scan error",)
e.printStackTrace()
}
.collect { device ->
// 获取到device对象
if (device == null) return@collect
Log.d(TAG, "startBluetoothManagement: scanned:${device}")
updateScannedDevices(ScannedDevice(device))
}
}
// overtime
updateConnectionState(BluetoothState.DisConnected)
}
и:

Код: Выделить всё

// in service, which open bluetooth and location
val openResult = bluetoothRepository.ensureBluetoothAndLocationEnabled()
репозиторий поддерживается путем внедрения зависимостей:

Код: Выделить всё

@Inject
lateinit var bluetoothRepository : BluetoothRepository
Разумна ли такая архитектура? Нужно ли мне оправдывать размещение службы в нижней части репозитория?

Подробнее здесь: https://stackoverflow.com/questions/798 ... th-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»