From 5a2d213f200e02ebdf8332ac8a9dacac916ec771 Mon Sep 17 00:00:00 2001 From: Alex Gotev Date: Sun, 20 Oct 2019 21:13:01 +0200 Subject: [PATCH] #450 using local broadcast manager instead of global to notify upload task event. This reduces overhead and augments security. --- manifest.gradle | 2 +- uploadservice/build.gradle | 1 + .../gotev/uploadservice/observer/request/RequestObserver.kt | 6 ++++-- .../gotev/uploadservice/observer/task/BroadcastEmitter.kt | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/manifest.gradle b/manifest.gradle index 993b16c0..4c11eff2 100644 --- a/manifest.gradle +++ b/manifest.gradle @@ -37,5 +37,5 @@ ext { // Library and app dependencies versions androidx_appcompat_version = '1.1.0' - + androidx_local_broadcast_version = '1.0.0' } diff --git a/uploadservice/build.gradle b/uploadservice/build.gradle index bc92e725..4ff123db 100644 --- a/uploadservice/build.gradle +++ b/uploadservice/build.gradle @@ -81,6 +81,7 @@ dependencies { implementation "androidx.appcompat:appcompat:$androidx_appcompat_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "androidx.localbroadcastmanager:localbroadcastmanager:$androidx_local_broadcast_version" } bintray { diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/observer/request/RequestObserver.kt b/uploadservice/src/main/java/net/gotev/uploadservice/observer/request/RequestObserver.kt index 5fabdb5c..f44e628a 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/observer/request/RequestObserver.kt +++ b/uploadservice/src/main/java/net/gotev/uploadservice/observer/request/RequestObserver.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent +import androidx.localbroadcastmanager.content.LocalBroadcastManager import net.gotev.uploadservice.UploadRequest import net.gotev.uploadservice.UploadService import net.gotev.uploadservice.UploadServiceConfig @@ -62,7 +63,8 @@ class RequestObserver( */ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun register() { - context.registerReceiver(this, UploadServiceConfig.broadcastIntentFilter) + LocalBroadcastManager.getInstance(context) + .registerReceiver(this, UploadServiceConfig.broadcastIntentFilter) subscribedUploadID?.let { if (!UploadService.taskList.contains(it)) { @@ -76,7 +78,7 @@ class RequestObserver( */ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) fun unregister() { - context.unregisterReceiver(this) + LocalBroadcastManager.getInstance(context).unregisterReceiver(this) } /** diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/observer/task/BroadcastEmitter.kt b/uploadservice/src/main/java/net/gotev/uploadservice/observer/task/BroadcastEmitter.kt index 64b672dc..a27790b7 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/observer/task/BroadcastEmitter.kt +++ b/uploadservice/src/main/java/net/gotev/uploadservice/observer/task/BroadcastEmitter.kt @@ -1,6 +1,7 @@ package net.gotev.uploadservice.observer.task import android.content.Context +import androidx.localbroadcastmanager.content.LocalBroadcastManager import net.gotev.uploadservice.data.BroadcastData import net.gotev.uploadservice.data.UploadInfo import net.gotev.uploadservice.data.UploadStatus @@ -9,7 +10,7 @@ import net.gotev.uploadservice.network.ServerResponse class BroadcastEmitter(private val context: Context) : UploadTaskObserver { private fun send(data: BroadcastData) { - context.sendBroadcast(data.toIntent()) + LocalBroadcastManager.getInstance(context).sendBroadcast(data.toIntent()) } override fun initialize(info: UploadInfo) {}