From c2e8004d74de9a5a1d6050bbc9bd2d161bf285d9 Mon Sep 17 00:00:00 2001 From: Alex Gotev Date: Sun, 9 Feb 2020 12:07:32 +0100 Subject: [PATCH] implemented passing explicit lifecycle owner to request observer. Released 4.1.0 --- examples/SimpleMultipartUpload/app/build.gradle | 2 +- .../app/src/main/java/it/gotev/testapp/App.kt | 2 +- examples/SimpleMultipartUpload/build.gradle | 6 +++--- examples/app/demoapp/build.gradle | 3 ++- .../src/main/java/net/gotev/uploadservicedemo/App.java | 6 +++--- .../gotev/uploadservicedemo/MultipartUploadActivity.java | 2 +- manifest.gradle | 3 ++- uploadservice/build.gradle | 2 ++ .../src/main/java/net/gotev/uploadservice/UploadRequest.kt | 6 ++++-- .../gotev/uploadservice/observer/request/RequestObserver.kt | 3 ++- 10 files changed, 21 insertions(+), 14 deletions(-) diff --git a/examples/SimpleMultipartUpload/app/build.gradle b/examples/SimpleMultipartUpload/app/build.gradle index ee6ea9ad..9dc18f8d 100644 --- a/examples/SimpleMultipartUpload/app/build.gradle +++ b/examples/SimpleMultipartUpload/app/build.gradle @@ -33,7 +33,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' - def uploadServiceVersion = "4.0.0-rc1" + def uploadServiceVersion = "4.1.0" implementation "net.gotev:uploadservice:$uploadServiceVersion" } diff --git a/examples/SimpleMultipartUpload/app/src/main/java/it/gotev/testapp/App.kt b/examples/SimpleMultipartUpload/app/src/main/java/it/gotev/testapp/App.kt index b112e384..1a758fd9 100644 --- a/examples/SimpleMultipartUpload/app/src/main/java/it/gotev/testapp/App.kt +++ b/examples/SimpleMultipartUpload/app/src/main/java/it/gotev/testapp/App.kt @@ -27,7 +27,7 @@ class App : Application() { createNotificationChannel() UploadServiceConfig.initialize( - namespace = packageName, + context = this, defaultNotificationChannel = notificationChannelID, debug = BuildConfig.DEBUG ) diff --git a/examples/SimpleMultipartUpload/build.gradle b/examples/SimpleMultipartUpload/build.gradle index f4ed5637..7fe17180 100644 --- a/examples/SimpleMultipartUpload/build.gradle +++ b/examples/SimpleMultipartUpload/build.gradle @@ -5,10 +5,10 @@ buildscript { repositories { google() jcenter() - + } dependencies { - classpath 'com.android.tools.build:gradle:3.5.2' + classpath 'com.android.tools.build:gradle:3.5.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -19,7 +19,7 @@ allprojects { repositories { google() jcenter() - + } } diff --git a/examples/app/demoapp/build.gradle b/examples/app/demoapp/build.gradle index 07c01c0b..4ee9cd7a 100644 --- a/examples/app/demoapp/build.gradle +++ b/examples/app/demoapp/build.gradle @@ -52,7 +52,8 @@ dependencies { // Support implementation "androidx.appcompat:appcompat:$androidx_appcompat_version" - implementation 'com.google.android.material:material:1.0.0' + implementation "com.google.android.material:material:$androidx_appcompat_version" + implementation "androidx.lifecycle:lifecycle-extensions:$androidx_lifecycle_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/App.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/App.java index f63737d6..3a25ce13 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/App.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/App.java @@ -8,6 +8,8 @@ import android.os.StrictMode; import android.util.Log; +import androidx.lifecycle.ProcessLifecycleOwner; + import com.facebook.stetho.Stetho; import com.facebook.stetho.okhttp3.StethoInterceptor; @@ -56,9 +58,7 @@ public void onCreate() { // setup backoff multiplier UploadServiceConfig.setRetryPolicy(new RetryPolicyConfig(1, 10, 2, 3)); - createNotificationChannel(); - - new RequestObserver(this, new GlobalBroadcastReceiver()).register(); + new RequestObserver(this, ProcessLifecycleOwner.get(), new GlobalBroadcastReceiver()).register(); } private void createNotificationChannel() { diff --git a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/MultipartUploadActivity.java b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/MultipartUploadActivity.java index b45ed12e..3e445617 100644 --- a/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/MultipartUploadActivity.java +++ b/examples/app/demoapp/src/main/java/net/gotev/uploadservicedemo/MultipartUploadActivity.java @@ -71,7 +71,7 @@ public void onFile(UploadItem item) { }); - request.subscribe(this, new RequestObserverDelegate() { + request.subscribe(this, this, new RequestObserverDelegate() { @Override public void onProgress(@NotNull Context context, @NotNull UploadInfo uploadInfo) { Log.e("LIFECYCLE", "Progress " + uploadInfo.getProgressPercent()); diff --git a/manifest.gradle b/manifest.gradle index 85414e82..3c060358 100644 --- a/manifest.gradle +++ b/manifest.gradle @@ -12,7 +12,7 @@ ext { library_licenses = ["Apache-2.0"] library_licenses_url = 'https://www.apache.org/licenses/LICENSE-2.0.txt' library_project_group = 'net.gotev' - library_version = '4.0.0' + library_version = '4.1.0' version_code = 40 min_sdk = 21 target_sdk = 29 @@ -36,6 +36,7 @@ ext { androidx_test_espresso_version = '3.2.0' // Library and app dependencies versions + androidx_lifecycle_version = '2.2.0' androidx_appcompat_version = '1.1.0' androidx_local_broadcast_version = '1.0.0' } diff --git a/uploadservice/build.gradle b/uploadservice/build.gradle index 4ff123db..8242d3f7 100644 --- a/uploadservice/build.gradle +++ b/uploadservice/build.gradle @@ -4,6 +4,7 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'com.jfrog.bintray' apply plugin: 'com.github.ben-manes.versions' apply plugin: "org.jlleitschuh.gradle.ktlint" +apply plugin: 'kotlin-kapt' Properties properties = new Properties() if (project.rootProject.file("local.properties").exists()) { @@ -79,6 +80,7 @@ dependencies { // Support implementation "androidx.appcompat:appcompat:$androidx_appcompat_version" + kapt "androidx.lifecycle:lifecycle-compiler:$androidx_lifecycle_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "androidx.localbroadcastmanager:localbroadcastmanager:$androidx_local_broadcast_version" diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadRequest.kt b/uploadservice/src/main/java/net/gotev/uploadservice/UploadRequest.kt index b09559ff..56e2c3ae 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadRequest.kt +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadRequest.kt @@ -2,6 +2,7 @@ package net.gotev.uploadservice import android.content.Context import android.os.Parcelable +import androidx.lifecycle.LifecycleOwner import net.gotev.uploadservice.data.UploadFile import net.gotev.uploadservice.data.UploadNotificationConfig import net.gotev.uploadservice.data.UploadTaskParameters @@ -74,10 +75,11 @@ constructor(protected val context: Context, protected var serverUrl: String) { /** * Subscribe to events of this upload request by creating a new request observer. * @param context context + * @param lifecycleOwner lifecycle to use when subscribing for events * @param delegate Observer delegate implementation */ - fun subscribe(context: Context, delegate: RequestObserverDelegate): RequestObserver { - return RequestObserver(context, delegate).apply { subscribe(this@UploadRequest) } + fun subscribe(context: Context, lifecycleOwner: LifecycleOwner, delegate: RequestObserverDelegate): RequestObserver { + return RequestObserver(context, lifecycleOwner, delegate).apply { subscribe(this@UploadRequest) } } protected abstract fun getAdditionalParameters(): Parcelable 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 455bc02e..275d6d66 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 @@ -17,13 +17,14 @@ import net.gotev.uploadservice.data.UploadStatus class RequestObserver( private val context: Context, + lifecycleOwner: LifecycleOwner, private val delegate: RequestObserverDelegate ) : BroadcastReceiver(), LifecycleObserver { private var subscribedUploadID: String? = null init { - (context as? LifecycleOwner)?.lifecycle?.addObserver(this) + lifecycleOwner.lifecycle.addObserver(this) } override fun onReceive(context: Context, intent: Intent?) {