2026-05-23 15:57:32.565 26339-26586 AudioRecord com.example.musicstringstudio D [audioRecordData][fine] 15s(f:15000 m:75 s:0) : pid 26339 uid 10307 sessionId 9985 sr 48000 ch 1 fmt 5
2026-05-23 15:57:33.963 26339-26339 PitchJNI com.example.musicstringstudio I nativeStopListening called.
2026-05-23 15:57:33.963 26339-26339 AAudio com.example.musicstringstudio D AAudioStream_requestStop(s#1) called
2026-05-23 15:57:33.963 26339-26339 AAudioStream com.example.musicstringstudio D setState(s#1) from 4 to 9
2026-05-23 15:57:33.963 26339-26339 AudioRecord com.example.musicstringstudio D stop mSessionID=9985
2026-05-23 15:57:33.963 26339-26339 AudioRecord com.example.musicstringstudio D stop(3377): mActive:1
2026-05-23 15:57:34.076 26339-26339 AAudio com.example.musicstringstudio D AAudioStream_requestStop(s#1) called
2026-05-23 15:57:34.086 26339-26339 AAudio com.example.musicstringstudio D AAudioStream_close(s#1) called ---------------
2026-05-23 15:57:34.086 26339-26339 AAudioStream com.example.musicstringstudio D setState(s#1) from 9 to 11
2026-05-23 15:57:34.086 26339-26339 AudioRecord com.example.musicstringstudio D stop mSessionID=9985
2026-05-23 15:57:34.086 26339-26339 AudioRecord com.example.musicstringstudio D stop(3377): mActive:0
2026-05-23 15:57:34.086 26339-26339 AudioRecord com.example.musicstringstudio D stop mSessionID=9985
2026-05-23 15:57:34.086 26339-26339 AudioRecord com.example.musicstringstudio D stop(3377): mActive:0
2026-05-23 15:57:34.088 26339-26339 AAudioStream com.example.musicstringstudio D setState(s#1) from 11 to 12
2026-05-23 15:57:34.088 26339-26339 AAudioStream com.example.musicstringstudio D ~AudioStream(s#1) mPlayerBase strongCount = 1
2026-05-23 15:57:34.088 26339-26339 sicstringstudio com.example.musicstringstudio D PlayerBase::~PlayerBase()
2026-05-23 15:57:34.088 26339-26339 AAudio com.example.musicstringstudio D AAudioStream_close(s#1) returned 0 ---------
2026-05-23 15:57:34.088 26339-26339 AudioInputStream com.example.musicstringstudio I Oboe stream closed.
2026-05-23 15:57:34.089 26339-26589 AudioInputStream com.example.musicstringstudio I AlgThread exited.
2026-05-23 15:57:34.089 26339-26589 PitchJNI com.example.musicstringstudio I JNI Thread detached automatically on exit.
2026-05-23 15:57:34.089 26339-26339 AudioInputStream com.example.musicstringstudio I AlgThread joined.
2026-05-23 15:57:34.089 26339-26339 PitchJNI com.example.musicstringstudio I AudioInputStream released.
2026-05-23 15:57:34.106 26339-26339 IS_CTS_MODE com.example.musicstringstudio D false
2026-05-23 15:57:34.106 26339-26339 MULTI_WINDOW_ENABLED com.example.musicstringstudio D true
2026-05-23 15:57:34.127 26339-26339 OnBackInvokedCallback com.example.musicstringstudio W OnBackInvokedCallback is not enabled for the application.
Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.
2026-05-23 15:57:34.175 26339-26339 VRI[ScoreD...lActivity] com.example.musicstringstudio D vri.reportNextDraw android.view.ViewRootImpl.performTraversals:4013 android.view.ViewRootImpl.doTraversal:2725 android.view.ViewRootImpl$TraversalRunnable.run:9812 android.view.Choreographer$CallbackRecord.run:1505 android.view.Choreographer$CallbackRecord.run:1513
2026-05-23 15:57:34.175 26339-26339 VRI[ScoreD...lActivity] com.example.musicstringstudio D vri.Setup new sync id=0 syncSeqId=0
2026-05-23 15:57:34.180 26339-26370 perf_hint com.example.musicstringstudio E Session creation failed, mPreferredRateNanos: -1
2026-05-23 15:57:34.181 26339-26339 VRI[ScoreD...lActivity] com.example.musicstringstudio D vri.reportDrawFinished syncSeqId=0 android.view.ViewRootImpl.lambda$createSyncIfNeeded$4$android-view-ViewRootImpl:4081 android.view.ViewRootImpl$$ExternalSyntheticLambda2.run:6 android.os.Handler.handleCallback:942 android.os.Handler.dispatchMessage:99 android.os.Looper.loopOnce:211
2026-05-23 15:57:34.203 26339-26339 DecorView[] com.example.musicstringstudio D onWindowFocusChanged hasWindowFocus false
2026-05-23 15:57:34.236 26339-26339 DecorView[] com.example.musicstringstudio D onWindowFocusChanged hasWindowFocus true
2026-05-23 15:57:34.237 26339-26339 HandWritingStubImpl com.example.musicstringstudio I refreshLastKeyboardType: 1
2026-05-23 15:57:34.237 26339-26339 HandWritingStubImpl com.example.musicstringstudio I getCurrentKeyboardType: 1
2026-05-23 15:57:34.242 7736-7736 BaseInputMethodService com.sohu.inputmethod.sogou.xiaomi E onStartInput app:com.example.musicstringstudio restarting:false
2026-05-23 15:57:39.246 26339-26339 ScoreDetailActivity com.example.musicstringstudio D [Assessment] MediaRecorder start path=/data/user/0/com.example.musicstringstudio/cache/assessment_2571400031286755251.m4a
2026-05-23 15:57:39.246 26339-26339 ScoreDetailViewModel com.example.musicstringstudio D [Assessment] recording started
2026-05-23 15:57:39.248 26339-26339 ScoreDetailViewModel com.example.musicstringstudio D [Assessment] anchorTick=leadingRest.endTick=1920
2026-05-23 15:57:39.248 26339-26339 ScoreDetailActivity com.example.musicstringstudio D [Assessment] session start anchorTick=1920
2026-05-23 15:57:39.249 26339-26339 PitchJNI com.example.musicstringstudio I nativeStopListening called.
2026-05-23 15:57:39.296 26339-26339 AlphaTabPl...Controller com.example.musicstringstudio D Playback force stopped
2026-05-23 15:57:39.297 26339-26339 AlphaTabPl...Controller com.example.musicstringstudio D Seeking to tick: 0 (current: 1)
2026-05-23 15:57:39.297 26339-26339 AlphaTabPl...Controller com.example.musicstringstudio D Playing from tick: 0
2026-05-23 15:57:39.304 26339-26579 AudioTrack com.example.musicstringstudio D start(3375): prior state:STATE_STOPPED
2026-05-23 15:57:39.316 26339-26339 AlphaTabPl...Controller com.example.musicstringstudio D Player state changed: isPlaying=false
2026-05-23 15:57:39.317 26339-26339 AlphaTabPl...Controller com.example.musicstringstudio D Player state changed: isPlaying=true
2026-05-23 15:57:39.330 26339-26559 AidlConversion com.example.musicstringstudio W aidl2legacy_AudioChannelLayout_audio_channel_mask_t: no legacy output audio_channel_mask_t found for AudioChannelLayout{layoutMask: 16}
2026-05-23 15:57:39.338 26339-26339 DecorView[] com.example.musicstringstudio D onWindowFocusChanged hasWindowFocus true
2026-05-23 15:57:39.340 26339-26339 HandWritingStubImpl com.example.musicstringstudio I refreshLastKeyboardType: 1
2026-05-23 15:57:39.340 26339-26339 HandWritingStubImpl com.example.musicstringstudio I getCurrentKeyboardType: 1
2026-05-23 15:57:39.345 7736-7736 BaseInputMethodService com.sohu.inputmethod.sogou.xiaomi E onStartInput app:com.example.musicstringstudio restarting:false
2026-05-23 15:57:40.339 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 1s(f:0 m:1007 s:0 k:1007 cm:1007 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:40.912 26339-26339 ScoreDetailActivity com.example.musicstringstudio D [Assessment] anchor crossed tick=1920 offsetMs=1788
2026-05-23 15:57:41.417 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 2s(f:0 m:2086 s:0 k:2086 cm:2086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:42.289 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:57:42.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 3s(f:0 m:3046 s:0 k:3046 cm:3046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:43.337 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 4s(f:0 m:4005 s:0 k:4005 cm:4005 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:44.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 5s(f:0 m:5087 s:0 k:5087 cm:5087 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:45.379 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 6s(f:0 m:6048 s:0 k:6048 cm:6048 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:46.339 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 7s(f:0 m:7007 s:0 k:7007 cm:7007 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:47.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 8s(f:0 m:8086 s:0 k:8086 cm:8086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:47.622 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:57:48.377 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 9s(f:0 m:9045 s:0 k:9045 cm:9045 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:49.338 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 10s(f:0 m:10006 s:0 k:10006 cm:10006 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:50.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 11s(f:0 m:11086 s:0 k:11086 cm:11086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:51.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 12s(f:0 m:12046 s:0 k:12046 cm:12046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:52.008 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:57:52.338 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 13s(f:0 m:13006 s:0 k:13006 cm:13006 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:53.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 14s(f:0 m:14086 s:0 k:14086 cm:14086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:54.377 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 15s(f:0 m:15045 s:0 k:15045 cm:15045 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:55.338 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 16s(f:0 m:16006 s:0 k:16006 cm:16006 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:56.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 17s(f:0 m:17086 s:0 k:17086 cm:17086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:56.649 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:57:56.649 26339-26352 sicstringstudio com.example.musicstringstudio I Background concurrent copying GC freed 31693(1136KB) AllocSpace objects, 1184(23MB) LOS objects, 66% free, 11MB/35MB, paused 63us,35us total 110.876ms
2026-05-23 15:57:57.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 18s(f:0 m:18046 s:0 k:18046 cm:18046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:58.339 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 19s(f:0 m:19007 s:0 k:19007 cm:19007 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:57:59.418 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 20s(f:0 m:20087 s:0 k:20087 cm:20087 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:00.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 21s(f:0 m:21046 s:0 k:21046 cm:21046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:01.338 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 22s(f:0 m:22006 s:0 k:22006 cm:22006 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:02.085 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:02.419 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 23s(f:0 m:23087 s:0 k:23087 cm:23087 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:03.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 24s(f:0 m:24046 s:0 k:24046 cm:24046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:04.339 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 25s(f:0 m:25007 s:0 k:25007 cm:25007 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:05.417 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 26s(f:0 m:26086 s:0 k:26086 cm:26086 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:06.378 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 27s(f:0 m:27046 s:0 k:27046 cm:27046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:07.338 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 28s(f:0 m:28006 s:0 k:28006 cm:28006 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:07.916 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:08.419 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 29s(f:0 m:29087 s:0 k:29087 cm:29087 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:09.379 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 30s(f:0 m:30047 s:0 k:30047 cm:30047 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:10.339 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 31s(f:0 m:31007 s:0 k:31007 cm:31007 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:11.417 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 32s(f:0 m:32085 s:0 k:32085 cm:32085 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:12.377 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 33s(f:0 m:33046 s:0 k:33046 cm:33046 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:13.132 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.337 26339-26581 AudioTrack com.example.musicstringstudio D [audioTrackData][mute] 34s(f:0 m:34005 s:0 k:34005 cm:34005 cs:0) : pid 26339 uid 10307 sessionId 9977 sr 44100 ch 2 fmt 5
2026-05-23 15:58:13.611 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.654 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.719 26339-26638 AudioTrack com.example.musicstringstudio D getTimestamp_l(3375): device stall time corrected using current time 1908684737996710
2026-05-23 15:58:13.732 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.763 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.827 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.858 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.917 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:13.948 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.012 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.041 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.106 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.139 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.203 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.234 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.288 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.321 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.382 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.414 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.481 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.515 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.573 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.599 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.660 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.693 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.758 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.786 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.845 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.876 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.943 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:14.973 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.041 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.069 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.138 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.165 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.236 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.266 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.335 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.366 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.438 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.468 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.536 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.563 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.631 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.659 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.727 26339-26352 sicstringstudio com.example.musicstringstudio I This is non sticky GC, maxfree is 8388608 minfree is 2097152
2026-05-23 15:58:15.756 26339-26352 sicstringstudio com.example.musicstringstudio I This is sticky GC, maxfree is 8388608 minfree is 2097152
### Expected Behavior
When the audio buffer runs empty at the end of playback, the Android platform code should gracefully handle the lack of samples without falling into a 100% CPU spin loop or causing memory leaks. The `playerFinished` event should be successfully emitted to the application layer.
### Steps To Reproduce
1. Initialize an `AlphaTabApi` instance on an Android client using the provided Kotlin native bindings.
2. Load any score or MIDI file.
3. Start playback and let it naturally play until it reaches the very end of the score.
4. Observe the Android Logcat: A severe GC storm starts immediately (e.g., `Sticky GC`, `23MB LOS objects being freed`), and CPU usage spikes to 100% due to the spin loop in `AndroidAudioWorker.kt`.
5. Observe the application layer: The `playerFinished` event callback is never triggered.
### Link to jsFiddle, CodePen, Project
N/A - This is an Android-specific platform issue that occurs within the Kotlin native bindings (`AndroidAudioWorker.kt` and `AndroidSynthOutput.kt`). It cannot be reproduced in a web browser or jsFiddle, as Web Audio handles 0-length buffers differently than Android's AudioTrack.
### Version and Environment
```bash
Platform: Android Native (Kotlin Bindings)
alphaTab Version: 1.9.0
Device: Xiaomi M2105K81AC
Android Version: Android 13 (API 33)
Audio API: AudioTrack
Is there an existing issue for this?
Current Behavior
When alphaTab finishes playing a score on Android, the client falls into an infinite 100% CPU spin loop, allocating massive amounts of memory and triggering a severe GC storm (Sticky GC). Furthermore, the
playerFinishedevent is never emitted.Detailed Breakdown of the Bug:
AndroidAudioWorker.ktreads0samples from the output._track.write(_buffer, 0, samplesFromBuffer, AudioTrack.WRITE_BLOCKING)with0samples.AudioTrack.writewith0samples is completely non-blocking and returns immediately.while (!_stopped)loop inAndroidAudioWorker.ktfalls into a 100% CPU spin loop.AndroidSynthOutput.kt'sread()method, a newFloat32Array(sampleCount.toDouble())(16KB) is allocated on every single call. This infinite spin loop instantly floods the JVM's Large Object Space, triggering a massive "Stop The World" GC storm._updateTimerthread, meaning_output.onSamplesPlayedis never called. As a result,AlphaSynthnever reaches_notPlayedSamples <= 0, and theplayerFinishedevent is never triggered.Click to expand Android Logcat showing the GC Storm
Platform
Android (WebView)
Anything else?
No response