Try to fix notification lock

This commit is contained in:
J-Jamet
2020-08-09 15:46:39 +02:00
parent a670006517
commit 98fb36d03a
2 changed files with 28 additions and 25 deletions

View File

@@ -76,7 +76,7 @@ class ProgressDatabaseTaskProvider(private val activity: FragmentActivity) {
var onActionFinish: ((actionTask: String,
result: ActionRunnable.Result) -> Unit)? = null
private var intentDatabaseTask = Intent(activity, DatabaseTaskNotificationService::class.java)
private var intentDatabaseTask = Intent(activity.applicationContext, DatabaseTaskNotificationService::class.java)
private var databaseTaskBroadcastReceiver: BroadcastReceiver? = null
private var mBinder: DatabaseTaskNotificationService.ActionTaskBinder? = null
@@ -219,11 +219,7 @@ class ProgressDatabaseTaskProvider(private val activity: FragmentActivity) {
if (bundle != null)
intentDatabaseTask.putExtras(bundle)
intentDatabaseTask.action = actionTask
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
activity.startForegroundService(intentDatabaseTask)
} else {
activity.startService(intentDatabaseTask)
}
activity.startService(intentDatabaseTask)
}
/*

View File

@@ -178,24 +178,41 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
actionRunnable
},
{ result ->
mActionTaskListeners.forEach { actionTaskListener ->
actionTaskListener.onStopAction(intentAction!!, result)
try {
mActionTaskListeners.forEach { actionTaskListener ->
actionTaskListener.onStopAction(intentAction!!, result)
}
} finally {
removeIntentData(intent)
TimeoutHelper.releaseTemporarilyDisableTimeout()
if (TimeoutHelper.checkTimeAndLockIfTimeout(this@DatabaseTaskNotificationService)) {
if (!mDatabase.loaded) {
stopSelf()
} else {
// Restart the service to open lock notification
startService(Intent(applicationContext,
DatabaseTaskNotificationService::class.java))
}
}
}
removeIntentData(intent)
buildMessage(intent)
sendBroadcast(Intent(DATABASE_STOP_TASK_ACTION))
mActionRunning = false
}
)
}
// Relaunch action if failed
return START_REDELIVER_INTENT
}
return START_STICKY
return when (intentAction) {
ACTION_DATABASE_LOAD_TASK, null -> {
START_STICKY
}
else -> {
// Relaunch action if failed
START_REDELIVER_INTENT
}
}
}
private fun buildMessage(intent: Intent?) {
@@ -341,17 +358,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
result
}
withContext(Dispatchers.Main) {
try {
onPostExecute.invoke(asyncResult.await())
} finally {
TimeoutHelper.releaseTemporarilyDisableTimeout()
// Start the opening notification
if (TimeoutHelper.checkTimeAndLockIfTimeout(this@DatabaseTaskNotificationService)) {
if (!mDatabase.loaded) {
stopSelf()
}
}
}
onPostExecute.invoke(asyncResult.await())
}
}
}