From 8f4c604eedb8096822f2701955fb09adee0f8110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20D=C3=BCzg=C3=B6ren?= Date: Sun, 15 Sep 2019 12:01:17 +0200 Subject: [PATCH] Project cleanup; removed unused resources and test classes. Fixed memory leak bug in DataFetcher.kt --- .../ExampleInstrumentedTest.java | 26 ------ .../adapters/ColourAdapter.kt | 11 +-- .../substitutionplan/adapters/FoodAdapter.kt | 4 - .../adapters/RingtoneAdapter.kt | 7 +- .../substitutionplan/data/DataFetcher.kt | 85 +++++++++--------- .../database/FoodViewModel.kt | 8 -- .../database/SubstRepository.kt | 24 ----- .../database/SubstViewModel.kt | 16 ---- app/src/main/res/anim/check_animation.xml | 20 ----- app/src/main/res/anim/chip_slide_in.xml | 9 -- app/src/main/res/anim/chip_slide_out.xml | 9 -- app/src/main/res/anim/fade_out.xml | 9 -- app/src/main/res/drawable-v21/avhbmp.png | Bin 3772 -> 0 bytes .../res/drawable-v21/ic_avhlogo_splash.xml | 5 -- .../main/res/drawable-v21/launch_screen.xml | 14 --- app/src/main/res/drawable/animated_check.xml | 2 +- .../main/res/layout/activity_first_time.xml | 3 +- app/src/main/res/layout/app_bar_main.xml | 2 - app/src/main/res/layout/content_main.xml | 1 - app/src/main/res/layout/content_settings.xml | 6 +- app/src/main/res/layout/course_card.xml | 5 +- .../main/res/layout/diagnostics_dialog.xml | 7 +- app/src/main/res/layout/food_layout.xml | 3 +- app/src/main/res/layout/plan.xml | 9 +- app/src/main/res/layout/secret_dialog.xml | 44 --------- app/src/main/res/layout/welcome_screen.xml | 3 - app/src/main/res/values-de/strings.xml | 11 --- app/src/main/res/values/strings.xml | 11 --- app/src/main/res/values/styles.xml | 14 --- .../substitutionplan/ExampleUnitTest.java | 17 ---- build.gradle | 4 +- 31 files changed, 68 insertions(+), 321 deletions(-) delete mode 100644 app/src/androidTest/java/com/denizd/substitutionplan/ExampleInstrumentedTest.java delete mode 100644 app/src/main/res/anim/check_animation.xml delete mode 100644 app/src/main/res/anim/chip_slide_in.xml delete mode 100644 app/src/main/res/anim/chip_slide_out.xml delete mode 100644 app/src/main/res/anim/fade_out.xml delete mode 100644 app/src/main/res/drawable-v21/avhbmp.png delete mode 100644 app/src/main/res/drawable-v21/ic_avhlogo_splash.xml delete mode 100644 app/src/main/res/drawable-v21/launch_screen.xml delete mode 100644 app/src/main/res/layout/secret_dialog.xml delete mode 100644 app/src/test/java/com/denizd/substitutionplan/ExampleUnitTest.java diff --git a/app/src/androidTest/java/com/denizd/substitutionplan/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/denizd/substitutionplan/ExampleInstrumentedTest.java deleted file mode 100644 index a16d79b..0000000 --- a/app/src/androidTest/java/com/denizd/substitutionplan/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.denizd.substitutionplan; - -import android.content.Context; -import androidx.test.InstrumentationRegistry; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.denizd.substitutionplan", appContext.getPackageName()); - } -} diff --git a/app/src/main/java/com/denizd/substitutionplan/adapters/ColourAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/ColourAdapter.kt index edc6e9d..8e59358 100644 --- a/app/src/main/java/com/denizd/substitutionplan/adapters/ColourAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/ColourAdapter.kt @@ -13,14 +13,14 @@ import com.google.android.material.card.MaterialCardView internal class ColourAdapter(private var mColours: List, onClickListener: OnClickListener) : RecyclerView.Adapter() { - val mOnClickListener = onClickListener + private val mOnClickListener = onClickListener class ColourViewHolder(view: View, clickListener: OnClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { val title: TextView = view.findViewById(R.id.item_text) var image: ImageView = view.findViewById(R.id.item_image) val titleNoLang: TextView = view.findViewById(R.id.item_text_no_lang) val cardView: MaterialCardView = view.findViewById(R.id.cardView) - val mClickListener = clickListener + private val mClickListener = clickListener init { view.setOnClickListener(this) } override fun onClick(v: View?) { mClickListener.onClick(adapterPosition, title.text.toString(), titleNoLang.text.toString()) } @@ -59,12 +59,7 @@ internal class ColourAdapter(private var mColours: List, onClickListener override fun getItemCount(): Int = mColours.size - fun setColours(colours: List) { - mColours = colours - notifyDataSetChanged() - } - - public interface OnClickListener { + internal interface OnClickListener { fun onClick(position: Int, title: String, titleNoLang: String) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt index 43f28f7..facbea5 100644 --- a/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/FoodAdapter.kt @@ -26,10 +26,6 @@ internal class FoodAdapter(food: ArrayList) : RecyclerView.Adapter, onClickLi override fun getItemCount(): Int = _ringtones.size - fun setRingtones(ringtones: List) { - _ringtones = ringtones - notifyDataSetChanged() - } - - public interface OnClickListener { + internal interface OnClickListener { fun onRingtoneClick(position: Int, name: String, uri: String) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt b/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt index bb409fd..94b6bba 100644 --- a/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt +++ b/app/src/main/java/com/denizd/substitutionplan/data/DataFetcher.kt @@ -21,6 +21,7 @@ import com.denizd.substitutionplan.models.Food import com.denizd.substitutionplan.models.Subst import com.google.android.material.snackbar.Snackbar import org.jsoup.Jsoup +import java.lang.ref.WeakReference import kotlin.collections.ArrayList /** @@ -40,13 +41,13 @@ internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boole private var menu = isMenu private var forceRefresh = forced - private var mContext = context + private var mContext = WeakReference(context) private var mApplication = application - private var mView = parentView + private var mView = WeakReference(parentView) private var priority = 200 - private var notifText = "" + private var notificationText = "" private var informational = "" - private val prefs = PreferenceManager.getDefaultSharedPreferences(mContext) + private val prefs = PreferenceManager.getDefaultSharedPreferences(mContext.get()) private val edit = prefs.edit() private var currentTime = "" private var currentFoodTime = "" @@ -72,21 +73,21 @@ internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boole } if (plan || menu) { - mView?.let { v: View -> - var snackText = "${mContext.getText(R.string.lastUpdated)} ${when { + mView.get()?.let { v: View -> + var snackText = "${mContext.get()?.getText(R.string.lastUpdated)} ${when { plan -> currentTime menu -> currentFoodTime else -> "---" }}" - snackText = if (forceRefresh) mContext.getString(R.string.forcedRefresh) else snackText + snackText = if (forceRefresh) mContext.get()?.getString(R.string.forcedRefresh) ?: "" else snackText val snackBarView = v.findViewById(R.id.coordination) Snackbar.make(snackBarView, snackText, Snackbar.LENGTH_LONG).show() } } } catch (e: Exception) { - mView?.let { v: View -> + mView.get()?.let { v: View -> val snackBarView = v.findViewById(R.id.coordination) - Snackbar.make(snackBarView, mContext.getString(R.string.noInternet), Snackbar.LENGTH_LONG).setBackgroundTint(ContextCompat.getColor(mContext, + Snackbar.make(snackBarView, mContext.get()?.getString(R.string.noInternet) ?: "", Snackbar.LENGTH_LONG).setBackgroundTint(ContextCompat.getColor(mContext.get()!!, R.color.colorError )).show() } @@ -95,11 +96,13 @@ internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boole } override fun onPostExecute(result: Void?) { - mView?.let { + mView.get()?.let { try { it.findViewById(R.id.pullToRefresh).isRefreshing = false } catch (ignored: Exception) {} } + mView.clear() + mContext.clear() } private fun requestFoodMenuData() { @@ -184,11 +187,11 @@ internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boole false ) }.forEach { substItem -> - notifText += "${if (notifText.isNotEmpty()) ",\n" else ""}${substItem.course}: ${if (substItem.additional.isNotEmpty()) substItem.additional else "---"}" + notificationText += "${if (notificationText.isNotEmpty()) ",\n" else ""}${substItem.course}: ${if (substItem.additional.isNotEmpty()) substItem.additional else "---"}" } } - if (notifText.isNotEmpty()) { + if (notificationText.isNotEmpty()) { sendNotification() } @@ -197,40 +200,42 @@ internal class DataFetcher(isPlan: Boolean, isMenu: Boolean, isJobService: Boole } private fun sendNotification() { - val openApp = Intent(mContext, Main::class.java) - openApp.flags = Intent.FLAG_ACTIVITY_NEW_TASK - openApp.flags += Intent.FLAG_ACTIVITY_CLEAR_TASK - val openAppPending = PendingIntent.getActivity(mContext, 0, openApp, 0) + mContext.get()?.let { c -> + val openApp = Intent(c, Main::class.java) + openApp.flags = Intent.FLAG_ACTIVITY_NEW_TASK + openApp.flags += Intent.FLAG_ACTIVITY_CLEAR_TASK + val openAppPending = PendingIntent.getActivity(c, 0, openApp, 0) - val notificationLayout = RemoteViews(mContext.packageName, R.layout.notification) - notificationLayout.setTextViewText(R.id.notification_title, mContext.getString( + val notificationLayout = RemoteViews(c.packageName, R.layout.notification) + notificationLayout.setTextViewText(R.id.notification_title, c.getString( R.string.substitutionPlan )) - notificationLayout.setTextViewText(R.id.notification_textview, notifText) + notificationLayout.setTextViewText(R.id.notification_textview, notificationText) - val manager = mContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val manager = c.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - HelperFunctions.getNotificationChannel(mContext, prefs) - } - - val notification = NotificationCompat.Builder(mContext, HelperFunctions.notificationChannelId) - .setStyle(NotificationCompat.DecoratedCustomViewStyle()) - .setCustomContentView(notificationLayout) - .setSmallIcon(R.drawable.ic_avh) - .setContentIntent(openAppPending) - .setAutoCancel(true) - .setColor(ContextCompat.getColor(mContext, R.color.colorAccent)) - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - val sound = if ((prefs.getString("ringtoneUri", "") ?: "").isNotEmpty()) { - Uri.parse(prefs.getString("ringtoneUri", "") ?: "") - } else { - RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + HelperFunctions.getNotificationChannel(c, prefs) } - notification.setSound(sound) - } - manager.notify(1, notification.build()) + val notification = NotificationCompat.Builder(c, HelperFunctions.notificationChannelId) + .setStyle(NotificationCompat.DecoratedCustomViewStyle()) + .setCustomContentView(notificationLayout) + .setSmallIcon(R.drawable.ic_avh) + .setContentIntent(openAppPending) + .setAutoCancel(true) + .setColor(ContextCompat.getColor(c, R.color.colorAccent)) + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + val sound = if ((prefs.getString("ringtoneUri", "") ?: "").isNotEmpty()) { + Uri.parse(prefs.getString("ringtoneUri", "") ?: "") + } else { + RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + } + notification.setSound(sound) + } + + manager.notify(1, notification.build()) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt b/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt index ed03c38..c42574b 100644 --- a/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/FoodViewModel.kt @@ -14,12 +14,4 @@ internal class FoodViewModel(application: Application) : AndroidViewModel(applic init { allFoods = repository.allFoods } - - fun insert(food: Food) { - repository.insert(food) - } - - fun deleteAll() { - repository.deleteAll() - } } diff --git a/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt index 8e8c59c..0589342 100644 --- a/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstRepository.kt @@ -22,14 +22,6 @@ internal class SubstRepository(application: Application) { InsertSubstAsync(substDao).execute(subst) } - fun update(subst: Subst) { - UpdateSubstAsync(substDao).execute(subst) - } - - fun delete(subst: Subst) { - DeleteSubstAsync(substDao).execute(subst) - } - fun deleteAllSubst() { DeleteAllSubstAsync(substDao).execute() } @@ -42,22 +34,6 @@ internal class SubstRepository(application: Application) { } } - class UpdateSubstAsync(substDao: SubstDao?) : AsyncTask() { - private val mSubstDao = substDao - override fun doInBackground(vararg substs: Subst): Void? { - mSubstDao?.updateSubst(substs[0]) - return null - } - } - - class DeleteSubstAsync(substDao: SubstDao?) : AsyncTask() { - private val mSubstDao = substDao - override fun doInBackground(vararg substs: Subst): Void? { - mSubstDao?.deleteSubst(substs[0]) - return null - } - } - class DeleteAllSubstAsync(substDao: SubstDao?) : AsyncTask() { private val mSubstDao = substDao override fun doInBackground(vararg voids: Void): Void? { diff --git a/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt index 273e6cd..cefd0a6 100644 --- a/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstViewModel.kt @@ -14,20 +14,4 @@ internal class SubstViewModel(application: Application) : AndroidViewModel(appli init { allSubst = repository.allSubst } - - fun insertSubst(subst: Subst) { - repository.insert(subst) - } - - fun updateSubst(subst: Subst) { - repository.update(subst) - } - - fun deleteSubst(subst: Subst) { - repository.delete(subst) - } - - fun deleteAllSubst() { - repository.deleteAllSubst() - } } diff --git a/app/src/main/res/anim/check_animation.xml b/app/src/main/res/anim/check_animation.xml deleted file mode 100644 index 77b70da..0000000 --- a/app/src/main/res/anim/check_animation.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/chip_slide_in.xml b/app/src/main/res/anim/chip_slide_in.xml deleted file mode 100644 index 680f133..0000000 --- a/app/src/main/res/anim/chip_slide_in.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/chip_slide_out.xml b/app/src/main/res/anim/chip_slide_out.xml deleted file mode 100644 index c840530..0000000 --- a/app/src/main/res/anim/chip_slide_out.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/fade_out.xml b/app/src/main/res/anim/fade_out.xml deleted file mode 100644 index 301f935..0000000 --- a/app/src/main/res/anim/fade_out.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-v21/avhbmp.png b/app/src/main/res/drawable-v21/avhbmp.png deleted file mode 100644 index 813e9021b624e0a5c5033f031735525ebc6b1698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3772 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 my;<1t*dSj_2$3l^+wA`@g{1$g=aM%70000 - - diff --git a/app/src/main/res/drawable-v21/launch_screen.xml b/app/src/main/res/drawable-v21/launch_screen.xml deleted file mode 100644 index 4b5d11a..0000000 --- a/app/src/main/res/drawable-v21/launch_screen.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/animated_check.xml b/app/src/main/res/drawable/animated_check.xml index 5f57bfd..3ce2e2f 100644 --- a/app/src/main/res/drawable/animated_check.xml +++ b/app/src/main/res/drawable/animated_check.xml @@ -3,5 +3,5 @@ android:drawable="@drawable/check_mark"> + android:animation="@animator/check_animation" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_time.xml b/app/src/main/res/layout/activity_first_time.xml index 952ecaf..d10a61e 100644 --- a/app/src/main/res/layout/activity_first_time.xml +++ b/app/src/main/res/layout/activity_first_time.xml @@ -14,7 +14,6 @@ android:layout_height="match_parent"> @@ -215,7 +214,7 @@ app:layout_constraintStart_toStartOf="@+id/txtLayoutClasses" app:layout_constraintTop_toBottomOf="@+id/txtLayoutCourses" /> - @@ -642,8 +641,7 @@ app:layout_constraintBottom_toTopOf="@+id/txtPrivacyP" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/txtWhatittook" - android:onClick="onClick"/> + app:layout_constraintTop_toBottomOf="@+id/txtWhatittook"/> - + android:textColor="@color/colorText" + tools:ignore="HardcodedText" /> @@ -48,7 +49,8 @@ android:layout_marginStart="24dp" android:layout_marginEnd="24dp" android:text="Reset launch counter" - style="@style/Widget.MaterialComponents.Button.OutlinedButton"/> + style="@style/Widget.MaterialComponents.Button.OutlinedButton" + tools:ignore="HardcodedText" />