chore: update targetSdk to 36 (Android 16) with timeout handler

This commit is contained in:
zarzet
2026-01-10 04:51:15 +07:00
parent 52dd657913
commit c8c0164964
2 changed files with 17 additions and 1 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ android {
defaultConfig { defaultConfig {
applicationId = "com.zarz.spotiflac" applicationId = "com.zarz.spotiflac"
minSdk = flutter.minSdkVersion minSdk = flutter.minSdkVersion
targetSdk = 34 targetSdk = 36
versionCode = flutter.versionCode versionCode = flutter.versionCode
versionName = flutter.versionName versionName = flutter.versionName
multiDexEnabled = true multiDexEnabled = true
@@ -15,6 +15,9 @@ import androidx.core.app.NotificationCompat
/** /**
* Foreground service to keep downloads running when app is in background. * Foreground service to keep downloads running when app is in background.
* This prevents Android from killing the download process or throttling network. * This prevents Android from killing the download process or throttling network.
*
* Note: Android 15+ (API 35+) has a 6-hour timeout for dataSync foreground services.
* The service will be stopped automatically after 6 hours of cumulative runtime in 24 hours.
*/ */
class DownloadService : Service() { class DownloadService : Service() {
@@ -106,6 +109,19 @@ class DownloadService : Service() {
override fun onBind(intent: Intent?): IBinder? = null override fun onBind(intent: Intent?): IBinder? = null
/**
* Called when the foreground service timeout is reached (Android 15+, API 35+).
* dataSync services have a 6-hour limit in a 24-hour period.
* We must call stopSelf() within a few seconds to avoid a crash.
*/
override fun onTimeout(startId: Int, fgsType: Int) {
// Log the timeout for debugging
android.util.Log.w("DownloadService", "Foreground service timeout reached (6 hours limit). Stopping service.")
// Gracefully stop the service
stopForegroundService()
}
private fun createNotificationChannel() { private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel( val channel = NotificationChannel(