Runtime
lib/runtime/ runs what lib/domain/ describes. You talk to one class, SmartPhoneClientManager; everything below it is created for you.
SmartPhoneClientManager one per app└─ SmartphoneStudyController one per study └─ SmartphoneDeploymentExecutor └─ TaskControlExecutor one per trigger + task pair ├─ TriggerExecutor decides when └─ TaskExecutor decides what └─ Probe one per measure, reads the sensorEvery level is an Executor with the same lifecycle: initialize, resume, pause, dispose. Resuming the client resumes the whole tree.
Where in the repo
Section titled “Where in the repo”| File | What is in it |
|---|---|
runtime/client_manager.dart |
The entry point |
runtime/study_controller.dart |
One study |
runtime/executors/ |
The tree above |
runtime/app_task_controller.dart, runtime/user_tasks.dart |
The user task queue |
runtime/device_manager/, runtime/permissions.dart |
Devices and permission requests |
runtime/sampling_package_registry.dart |
Finds the probe for a measure type |
Client manager and study controllerThe lifecycle you drive from your app
ExecutorsHow a protocol becomes running probes
App tasks and user tasksThe task queue your UI shows
Devices and permissionsDevice managers and permission requests