a-mabe / OpenHIIT

:weight_lifting: :medal_sports: Open-source, cross platform HIIT and Tabata interval timer. Pull requests are appreciated!
MIT License
38 stars 9 forks source link

[Feature/Improvement] Run the timer in the background #58

Closed a-mabe closed 8 months ago

a-mabe commented 11 months ago

Purpose: As a user, I want the timer to continue running even if OpenHIIT isn't the currently active app.

More details: The timer should continue running even if another app becomes active. For example, if the user opens their music app during a workout the timer should continue counting down.

Acceptance Criteria:

a-mabe commented 10 months ago

Work on the background timer is happening here: https://github.com/a-mabe/background_timer

The goal is to use the timer package as follows:

Countdown(
  controller: _controller,
  workSeconds: 8,
  restSeconds: 5,
  numberOfIntervals: 2,
  build: (_, int time) => Text(
    time.toString(),
    style: TextStyle(
      fontSize: 100,
    ),
  ),
  interval: Duration(milliseconds: 100),
  onFinished: () {

  },
),
a-mabe commented 9 months ago
V/BackgroundService( 1987): Service already running, using existing service
D/AndroidRuntime( 1987): Shutting down VM
E/AndroidRuntime( 1987): FATAL EXCEPTION: main
E/AndroidRuntime( 1987): Process: com.codepup.workout_timer, PID: 1987
E/AndroidRuntime( 1987): java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference
E/AndroidRuntime( 1987):    at id.flutter.flutter_background_service.BackgroundService$2.run(BackgroundService.java:238)
E/AndroidRuntime( 1987):    at android.os.Handler.handleCallback(Handler.java:942)
E/AndroidRuntime( 1987):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1987):    at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime( 1987):    at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime( 1987):    at android.app.ActivityThread.main(ActivityThread.java:7918)
E/AndroidRuntime( 1987):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 1987):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime( 1987):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
a-mabe commented 8 months ago

Closed in #70