Move the stringresource setup out of the Activity
This commit is contained in:
@@ -70,6 +70,8 @@ class MainActivity : AppCompatActivity() {
|
||||
Log.d("Lifetime Event", "MainActivity.onCreate")
|
||||
|
||||
setContent {
|
||||
StringResSetup()
|
||||
|
||||
val sharedPreferencesViewModel = prepareSharedViewModel()
|
||||
AmethystTheme(sharedPreferencesViewModel) {
|
||||
val accountStateViewModel: AccountStateViewModel = viewModel()
|
||||
@@ -87,11 +89,6 @@ class MainActivity : AppCompatActivity() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
val locales = this.applicationContext.resources.configuration.locales
|
||||
if (!locales.isEmpty) {
|
||||
checkLanguage(locales.get(0).language)
|
||||
}
|
||||
|
||||
Log.d("Lifetime Event", "MainActivity.onResume")
|
||||
|
||||
// starts muted every time
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.util.LruCache
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.lifecycle.compose.LifecycleResumeEffect
|
||||
|
||||
/**
|
||||
* Cache for stringResource because it seems to be > 1ms function in some phones
|
||||
@@ -43,6 +44,19 @@ fun checkLanguage(currentLanguage: String) {
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun StringResSetup() {
|
||||
val config = LocalConfiguration.current
|
||||
if (!config.locales.isEmpty) {
|
||||
val language = config.locales.get(0).language
|
||||
LifecycleResumeEffect(language) {
|
||||
checkLanguage(language)
|
||||
|
||||
onPauseOrDispose { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun stringRes(id: Int): String = resourceCache.get(id) ?: stringResource(id).also { resourceCache.put(id, it) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user