@@ -9,6 +9,8 @@ import androidx.work.Worker
99import androidx.work.WorkerParameters
1010import dagger.hilt.android.EntryPointAccessors
1111import java.util.Date
12+ import java.util.concurrent.ExecutorService
13+ import java.util.concurrent.Executors
1214import org.ole.planet.myplanet.MainApplication
1315import org.ole.planet.myplanet.callback.SuccessListener
1416import org.ole.planet.myplanet.callback.SyncListener
@@ -26,11 +28,11 @@ class AutoSyncWorker(
2628 private val context : Context ,
2729 workerParams : WorkerParameters
2830) : Worker(context, workerParams), SyncListener, CheckVersionCallback, SuccessListener {
29-
3031 private lateinit var preferences: SharedPreferences
3132 private lateinit var syncManager: SyncManager
3233 private lateinit var uploadManager: UploadManager
3334 private lateinit var uploadToShelfService: UploadToShelfService
35+ private val backgroundExecutor: ExecutorService = Executors .newSingleThreadExecutor()
3436
3537 override fun doWork (): Result {
3638 preferences = context.getSharedPreferences(PREFS_NAME , Context .MODE_PRIVATE )
@@ -78,22 +80,24 @@ class AutoSyncWorker(
7880 }
7981 if (! MainApplication .isSyncRunning) {
8082 MainApplication .isSyncRunning = true
81- uploadManager.uploadExamResult(this )
82- uploadManager.uploadFeedback(this )
83- uploadManager.uploadAchievement()
84- uploadManager.uploadResourceActivities(" " )
85- uploadManager.uploadUserActivities(this )
86- uploadManager.uploadCourseActivities()
87- uploadManager.uploadSearchActivity()
88- uploadManager.uploadRating()
89- uploadManager.uploadResource(this )
90- uploadManager.uploadNews()
91- uploadManager.uploadTeams()
92- uploadManager.uploadTeamTask()
93- uploadManager.uploadMeetups()
94- uploadManager.uploadCrashLog()
95- uploadManager.uploadSubmissions()
96- uploadManager.uploadActivities { MainApplication .isSyncRunning = false }
83+ backgroundExecutor.execute {
84+ uploadManager.uploadExamResult(this @AutoSyncWorker)
85+ uploadManager.uploadFeedback(this @AutoSyncWorker)
86+ uploadManager.uploadAchievement()
87+ uploadManager.uploadResourceActivities(" " )
88+ uploadManager.uploadUserActivities(this @AutoSyncWorker)
89+ uploadManager.uploadCourseActivities()
90+ uploadManager.uploadSearchActivity()
91+ uploadManager.uploadRating()
92+ uploadManager.uploadResource(this @AutoSyncWorker)
93+ uploadManager.uploadNews()
94+ uploadManager.uploadTeams()
95+ uploadManager.uploadTeamTask()
96+ uploadManager.uploadMeetups()
97+ uploadManager.uploadCrashLog()
98+ uploadManager.uploadSubmissions()
99+ uploadManager.uploadActivities { MainApplication .isSyncRunning = false }
100+ }
97101 }
98102 }
99103 }
@@ -103,6 +107,11 @@ class AutoSyncWorker(
103107 settings.edit { putLong(" lastUsageUploaded" , Date ().time) }
104108 }
105109
110+ override fun onStopped () {
111+ super .onStopped()
112+ backgroundExecutor.shutdown()
113+ }
114+
106115 private fun isAppInForeground (context : Context ): Boolean {
107116 val activityManager = context.getSystemService(Context .ACTIVITY_SERVICE ) as ActivityManager
108117 val runningProcesses = activityManager.runningAppProcesses ? : return false
0 commit comments