Browse Source

AppContextProvider: create a dedicated init fun

merge-requests/509/head
Geoffrey Métais 7 years ago
committed by Nicolas Pomepuy
parent
commit
f42d35f12c
  1. 18
      resources/src/main/java/org/videolan/resources/AppContextProvider.kt
  2. 6
      vlc-android/src/org/videolan/vlc/VLCApplication.kt

18
resources/src/main/java/org/videolan/resources/AppContextProvider.kt

@ -30,28 +30,30 @@ import android.content.res.Resources
import java.lang.reflect.InvocationTargetException
object AppContextProvider {
lateinit var _appContext: Context
private lateinit var context: Context
val appContext: Context
get() {
return if (::_appContext.isInitialized)
_appContext
return if (::context.isInitialized) context
else {
try {
_appContext = Class.forName("android.app.ActivityThread").getDeclaredMethod("currentApplication").invoke(null) as Application
context = Class.forName("android.app.ActivityThread").getDeclaredMethod("currentApplication").invoke(null) as Application
} catch (ignored: IllegalAccessException) {
} catch (ignored: InvocationTargetException) {
} catch (ignored: NoSuchMethodException) {
} catch (ignored: ClassNotFoundException) {
} catch (ignored: ClassCastException) {
}
_appContext
} catch (ignored: ClassCastException) {}
context
}
}
fun init(context: Context) {
this.context = context
}
/**
* @return the main resources from the Application
*/
val appResources: Resources
get() = appContext.resources
}
}

6
vlc-android/src/org/videolan/vlc/VLCApplication.kt

@ -54,7 +54,7 @@ import org.videolan.vlc.util.VLCInstance
class VLCApplication : MultiDexApplication(), Dialog.Callbacks by DialogDelegate {
init {
AppContextProvider._appContext = this
AppContextProvider.init(this)
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
FactoryManager.registerFactory(IMediaFactory.factoryId, MediaFactory())
@ -69,7 +69,7 @@ class VLCApplication : MultiDexApplication(), Dialog.Callbacks by DialogDelegate
Thread(Runnable {
locale = Settings.getInstance(this).getString("set_locale", "")
locale.takeIf { !it.isNullOrEmpty() }?.let {
AppContextProvider._appContext = ContextWrapper(this).wrap(locale!!)
AppContextProvider.init(ContextWrapper(this).wrap(it))
}
AppScope.launch(Dispatchers.IO) {
@ -90,7 +90,7 @@ class VLCApplication : MultiDexApplication(), Dialog.Callbacks by DialogDelegate
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
locale.takeIf { !it.isNullOrEmpty() }?.let {
AppContextProvider._appContext = ContextWrapper(this).wrap(locale!!)
AppContextProvider.init(ContextWrapper(this).wrap(it))
}
}

Loading…
Cancel
Save