Skip to content

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 sensor

Every level is an Executor with the same lifecycle: initialize, resume, pause, dispose. Resuming the client resumes the whole tree.

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