From 0b41adc162c0c5497b3eb6204ebce75087069f2b Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Tue, 21 Apr 2020 12:53:44 +0200 Subject: [PATCH] Committing shared preferences instead of applying and wrapping Glide with try/catch On low-end devices Glide sometimes fails (Android 4.3) --- app/build.gradle | 2 +- .../fragments/washinghands/SliderView.kt | 26 +++++++++++++------ .../jobs/workers/WorkHandler.kt | 8 +++--- .../appintro/IntroActivity.kt | 2 +- .../appintro/config/TimeConfigActivity.kt | 16 ++++++++---- .../timeconfig/TimeConfigViewHolder.kt | 16 ++++++++---- 6 files changed, 46 insertions(+), 24 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bb22664..3a26d9c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ android { applicationId "com.javinator9889.handwashingreminder" minSdkVersion 17 targetSdkVersion 29 - versionCode 93 + versionCode 94 versionName "1.0.1-${gitCommitHash}" multiDexEnabled true diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/washinghands/SliderView.kt b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/washinghands/SliderView.kt index 7b50a1e..8bd3f4e 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/washinghands/SliderView.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/washinghands/SliderView.kt @@ -68,9 +68,14 @@ class SliderView : BaseFragmentView() { Timber.d("Video finished loading") }) washingHandsModel.image.observe(viewLifecycleOwner, Observer { - GlideApp.with(this@SliderView) - .load(it) - .into(image) + try { + GlideApp.with(this@SliderView) + .load(it) + .into(image) + } catch (e: Exception) { + Timber.e(e, "Error while loading Glide view") + image.setImageResource(it) + } drawableId = it Timber.d("Image finished loading") incrementCounter() @@ -118,11 +123,16 @@ class SliderView : BaseFragmentView() { Timber.d("Slide resumed") video.requestFocus() video.start() - GlideApp.with(this) - .load(drawableId) - .centerInside() - .centerCrop() - .into(image) + try { + GlideApp.with(this) + .load(drawableId) + .centerInside() + .centerCrop() + .into(image) + } catch (e: Exception) { + Timber.e(e, "Error while loading Glide view") + image.setImageResource(drawableId) + } super.onResume() } diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/jobs/workers/WorkHandler.kt b/app/src/main/java/com/javinator9889/handwashingreminder/jobs/workers/WorkHandler.kt index 2a52b28..90898da 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/jobs/workers/WorkHandler.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/jobs/workers/WorkHandler.kt @@ -41,10 +41,10 @@ class WorkHandler(private val context: Context) { preferences.getString(Preferences.BREAKFAST_TIME, "")!! val lunchTime = preferences.getString(Preferences.LUNCH_TIME, "")!! val dinnerTime = preferences.getString(Preferences.DINNER_TIME, "")!! - if (breakfastTime == "" || lunchTime == "" || dinnerTime == "") - throw UninitializedPropertyAccessException( - "The scheduled time values are not initialized" - ) + if (breakfastTime == "" || lunchTime == "" || dinnerTime == "") { + Timber.e("The scheduled times are not initialized") + return + } val times = arrayOf(breakfastTime, lunchTime, dinnerTime) times.forEach { time -> val dueDate = Calendar.getInstance() diff --git a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/IntroActivity.kt b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/IntroActivity.kt index 20043f3..3c13fd8 100644 --- a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/IntroActivity.kt +++ b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/IntroActivity.kt @@ -136,7 +136,7 @@ class IntroActivity : AppIntro2(), super.onDonePressed(currentFragment) val app = HandwashingApplication.getInstance() val sharedPreferences = app.sharedPreferences - sharedPreferences.edit { + sharedPreferences.edit(commit = true) { timeConfigSlide.rvItems.forEach { item -> val time = "${item.hours}:${item.minutes}" when (item.id) { diff --git a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/config/TimeConfigActivity.kt b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/config/TimeConfigActivity.kt index aa449bf..5e8fa0e 100644 --- a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/config/TimeConfigActivity.kt +++ b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/config/TimeConfigActivity.kt @@ -38,6 +38,7 @@ import com.javinator9889.handwashingreminder.utils.AndroidVersion import com.javinator9889.handwashingreminder.utils.TimeConfig import com.javinator9889.handwashingreminder.utils.formatTime import com.javinator9889.handwashingreminder.utils.isAtLeast +import timber.log.Timber import java.util.* class TimeConfigActivity : @@ -110,11 +111,16 @@ class TimeConfigActivity : else -> null } if (imageRes != null) - GlideApp.with(this) - .load(imageRes) - .centerCrop() - .centerInside() - .into(image) + try { + GlideApp.with(this) + .load(imageRes) + .centerCrop() + .centerInside() + .into(image) + } catch (e: Exception) { + Timber.e(e, "Error while loading Glide view") + image.setImageResource(imageRes) + } setHours(sHours.toString(), sMinutes.toString()) } } diff --git a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/timeconfig/TimeConfigViewHolder.kt b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/timeconfig/TimeConfigViewHolder.kt index a628bbb..395cdef 100644 --- a/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/timeconfig/TimeConfigViewHolder.kt +++ b/appintro/src/main/java/com/javinator9889/handwashingreminder/appintro/timeconfig/TimeConfigViewHolder.kt @@ -29,6 +29,7 @@ import com.javinator9889.handwashingreminder.graphics.GlideApp import com.javinator9889.handwashingreminder.listeners.ViewHolder import com.javinator9889.handwashingreminder.utils.TimeConfig import com.mikepenz.iconics.view.IconicsImageView +import timber.log.Timber class TimeConfigViewHolder(private val view: View) : @@ -110,10 +111,15 @@ class TimeConfigViewHolder(private val view: View) : private fun loadImageView(@DrawableRes imageRes: Int?) { if (imageRes != null) - GlideApp.with(view) - .load(imageRes) - .centerInside() - .centerCrop() - .into(image) + try { + GlideApp.with(view) + .load(imageRes) + .centerInside() + .centerCrop() + .into(image) + } catch (e: Exception) { + Timber.e(e, "Error while loading Glide view") + image.setImageResource(imageRes) + } } } \ No newline at end of file