mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Fix: Memory Usage after app been closed
This commit is contained in:
parent
113f62954f
commit
d2bec1e4b8
@ -32,6 +32,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|||||||
import io.reactivex.rxjava3.core.Single
|
import io.reactivex.rxjava3.core.Single
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
@ -239,7 +240,7 @@ class EditRepositoryFragment() : ScreenFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launchWhenCreated {
|
lifecycleScope.launch {
|
||||||
val list = Database.RepositoryAdapter.getAll(null)
|
val list = Database.RepositoryAdapter.getAll(null)
|
||||||
takenAddresses = list.asSequence().filter { it.id != repositoryId }
|
takenAddresses = list.asSequence().filter { it.id != repositoryId }
|
||||||
.flatMap { (it.mirrors + it.address).asSequence() }
|
.flatMap { (it.mirrors + it.address).asSequence() }
|
||||||
|
@ -16,6 +16,8 @@ import androidx.core.net.toUri
|
|||||||
import androidx.core.widget.NestedScrollView
|
import androidx.core.widget.NestedScrollView
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.flowWithLifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.google.android.material.circularreveal.CircularRevealFrameLayout
|
import com.google.android.material.circularreveal.CircularRevealFrameLayout
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
@ -29,6 +31,7 @@ import com.looker.droidify.databinding.PreferenceItemBinding
|
|||||||
import com.looker.droidify.utility.extension.resources.*
|
import com.looker.droidify.utility.extension.resources.*
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class SettingsFragment : ScreenFragment() {
|
class SettingsFragment : ScreenFragment() {
|
||||||
|
|
||||||
@ -135,8 +138,10 @@ class SettingsFragment : ScreenFragment() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launchWhenStarted {
|
lifecycleScope.launch {
|
||||||
Preferences.subject.collect { updatePreference(it) }
|
Preferences.subject
|
||||||
|
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
|
||||||
|
.collect { updatePreference(it) }
|
||||||
}
|
}
|
||||||
updatePreference(null)
|
updatePreference(null)
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import android.view.animation.AccelerateInterpolator
|
|||||||
import android.view.animation.DecelerateInterpolator
|
import android.view.animation.DecelerateInterpolator
|
||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.flowWithLifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
@ -35,6 +37,7 @@ import io.reactivex.rxjava3.core.Observable
|
|||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
|
|
||||||
class TabsFragment : ScreenFragment() {
|
class TabsFragment : ScreenFragment() {
|
||||||
@ -201,12 +204,12 @@ class TabsFragment : ScreenFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateOrder()
|
updateOrder()
|
||||||
lifecycleScope.launchWhenStarted {
|
lifecycleScope.launch {
|
||||||
Preferences.subject.collect {
|
Preferences.subject
|
||||||
if (it == Preferences.Key.SortOrder) {
|
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
|
||||||
updateOrder()
|
.collect {
|
||||||
|
if (it == Preferences.Key.SortOrder) updateOrder()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val content = fragmentBinding.fragmentContent
|
val content = fragmentBinding.fragmentContent
|
||||||
@ -531,7 +534,6 @@ class TabsFragment : ScreenFragment() {
|
|||||||
itemView as MaterialTextView
|
itemView as MaterialTextView
|
||||||
itemView.gravity = Gravity.CENTER_VERTICAL
|
itemView.gravity = Gravity.CENTER_VERTICAL
|
||||||
itemView.resources.sizeScaled(16).let { itemView.setPadding(it, 0, it, 0) }
|
itemView.resources.sizeScaled(16).let { itemView.setPadding(it, 0, it, 0) }
|
||||||
itemView.setTextColor(context.getColorFromAttr(android.R.attr.textColor))
|
|
||||||
itemView.setTextSizeScaled(16)
|
itemView.setTextSizeScaled(16)
|
||||||
itemView.background =
|
itemView.background =
|
||||||
context.getDrawableFromAttr(android.R.attr.selectableItemBackground)
|
context.getDrawableFromAttr(android.R.attr.selectableItemBackground)
|
||||||
|
@ -6,7 +6,9 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
@ -21,6 +23,7 @@ import io.reactivex.rxjava3.core.Observable
|
|||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
||||||
|
|
||||||
@ -94,15 +97,17 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
|||||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||||
(recyclerView?.adapter as? AppListAdapter)?.apply {
|
(recyclerView?.adapter as? AppListAdapter)?.apply {
|
||||||
this.cursor = cursor
|
this.cursor = cursor
|
||||||
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
|
lifecycleScope.launch {
|
||||||
emptyText = when {
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
cursor == null -> ""
|
emptyText = when {
|
||||||
viewModel.searchQuery.first()
|
cursor == null -> ""
|
||||||
.isNotEmpty() -> getString(R.string.no_matching_applications_found)
|
viewModel.searchQuery.first()
|
||||||
else -> when (source) {
|
.isNotEmpty() -> getString(R.string.no_matching_applications_found)
|
||||||
Source.AVAILABLE -> getString(R.string.no_applications_available)
|
else -> when (source) {
|
||||||
Source.INSTALLED -> getString(R.string.no_applications_installed)
|
Source.AVAILABLE -> getString(R.string.no_applications_available)
|
||||||
Source.UPDATES -> getString(R.string.all_applications_up_to_date)
|
Source.INSTALLED -> getString(R.string.no_applications_installed)
|
||||||
|
Source.UPDATES -> getString(R.string.all_applications_up_to_date)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user