Widgets & Apps -vs- Datafields

I'm considering combining multiple full screen data fields into a single widget (or maybe an app) for my cycling activities. I've never coded a widget or an app. If you have, I have just a few basic questions that will help me decide to invest time in converting my DFs into a single widget or app.

The reason I am considering this is that I have 4 full screen DFs. All running concurrently. There is a lot of duplicated support code in each. Each one runs compute/onUpdate every second. So they use up a lot of compute cycles and battery. A single widget or app could consolidate a lot of the logic. I'd just need user interaction to switch screen views.

NOTE: all this would be solved if a DF could respond to primitive user input like a screen tap. I could fake it out I guess by looking for a fast stop/start button sequence to switch DF's view. But I hate hitting stop in the middle of a race even for a second. And I use LAPS so I can't use that button.

Here are my questions. These apply to an EDGE device, if that matters.

1. Can I tap in a particular section of the screen, and my widget will know where, so taps in different places can trigger different actions? Like tap top/right of screen to switch to another view?

2. If I start an activity, then launch a widget, the activity seems to keep running. So my widget should have easy access to all the internal activity data, like Activity.Info.currentHeartRate, right?

3. When viewing the widget, the default activity buttons don't seem to work, like the LAP button or even the START/STOP button. To get back to the data field view and activity controls, I need to stop the widget, right?

4. When I stop the widget, or swipe left/right which changes to a different widget, all widget context is lost, right? I'd have to store variables to persistent store in order to resume the widget's state?

5. On an EDGE device, a running Widget doesn't time out, right? It'll run forever as long as the activity is active?

6. For an App, it doesn't appear I can start an Activity, and then launch an App. So I I try to do this in an app, how would I have access to all the Activity.Info sensor data I need?

Thanks for any wisdom on these things from the gurus! :-)
  • 1) on devices that support onTap() for data fields, I'm pretty sure you can get the location of the tap
    2) yes
    3) yes
    4) yes
    5) yes - and it will keep running even if you aren't recording an activity
    6) with an app you have to do everything - starting the recording, laps, enabling sensors, manage pause/stop/auto pause/auto laps, etc.
  • An app gives you by far the most flexibility, but it is a lot of work to get it fully functional for recording activities. In the end, you can have a much better experience with an app but it might take a lot of time and effort to get there. All the tools for recording activities are there but you will have to reinvent a lot of wheels like keeping track of per lap calculations.