Commit 33e5d4dd authored by Mygod's avatar Mygod

Late init WorkManager

parent 601e56c9
......@@ -48,7 +48,7 @@ androidExtensions {
}
def lifecycleVersion = '2.1.0-beta01'
def roomVersion = '2.1.0-rc01'
def roomVersion = '2.1.0'
dependencies {
api project(':plugin')
api "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
......@@ -56,7 +56,7 @@ dependencies {
api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
api 'androidx.preference:preference:1.1.0-beta01'
api "androidx.room:room-runtime:$roomVersion"
api 'androidx.work:work-runtime-ktx:2.0.1'
api 'androidx.work:work-runtime-ktx:2.1.0-beta01'
api 'com.crashlytics.sdk.android:crashlytics:2.10.1'
api 'com.google.firebase:firebase-config:17.0.0'
api 'com.google.firebase:firebase-core:16.0.9'
......
......@@ -38,7 +38,6 @@ import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService
import androidx.work.Configuration
import androidx.work.WorkManager
import com.crashlytics.android.Crashlytics
import com.github.shadowsocks.acl.Acl
import com.github.shadowsocks.aidl.ShadowsocksConnection
......@@ -57,7 +56,7 @@ import java.io.File
import java.io.IOException
import kotlin.reflect.KClass
object Core {
object Core : Configuration.Provider {
const val TAG = "Core"
lateinit var app: Application
......@@ -85,7 +84,7 @@ object Core {
return result
}
fun init(app: Application, configureClass: KClass<out Any>) {
fun <T> init(app: T, configureClass: KClass<out Any>) where T : Application, T : Configuration.Provider {
this.app = app
this.configureIntent = {
PendingIntent.getActivity(it, 0, Intent(it, configureClass.java)
......@@ -105,7 +104,6 @@ object Core {
System.setProperty(DEBUG_PROPERTY_NAME, DEBUG_PROPERTY_VALUE_ON)
Fabric.with(deviceStorage, Crashlytics()) // multiple processes needs manual set-up
FirebaseApp.initializeApp(deviceStorage)
WorkManager.initialize(deviceStorage, Configuration.Builder().build())
// handle data restored/crash
if (Build.VERSION.SDK_INT >= 24 && DataStore.directBootAware &&
......@@ -139,6 +137,8 @@ object Core {
}
}
override fun getWorkManagerConfiguration() = Configuration.Builder().build()
fun getPackageInfo(packageName: String) = app.packageManager.getPackageInfo(packageName,
if (Build.VERSION.SDK_INT >= 28) PackageManager.GET_SIGNING_CERTIFICATES
else @Suppress("DEPRECATION") PackageManager.GET_SIGNATURES)!!
......
......@@ -22,6 +22,7 @@ package com.github.shadowsocks.acl
import android.content.Context
import androidx.work.*
import com.github.shadowsocks.Core.app
import kotlinx.coroutines.Dispatchers
import java.io.IOException
import java.net.URL
......@@ -31,7 +32,7 @@ class AclSyncer(context: Context, workerParams: WorkerParameters) : CoroutineWor
companion object {
private const val KEY_ROUTE = "route"
fun schedule(route: String) = WorkManager.getInstance().enqueueUniqueWork(route, ExistingWorkPolicy.REPLACE,
fun schedule(route: String) = WorkManager.getInstance(app).enqueueUniqueWork(route, ExistingWorkPolicy.REPLACE,
OneTimeWorkRequestBuilder<AclSyncer>().run {
setInputData(Data.Builder().putString(KEY_ROUTE, route).build())
setConstraints(Constraints.Builder()
......
......@@ -21,17 +21,17 @@
package com.github.shadowsocks
import android.app.Application
import android.content.res.Configuration
import androidx.appcompat.app.AppCompatDelegate
import androidx.work.Configuration
class App : Application() {
class App : Application(), Configuration.Provider by Core {
override fun onCreate() {
super.onCreate()
Core.init(this, MainActivity::class)
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}
override fun onConfigurationChanged(newConfig: Configuration) {
override fun onConfigurationChanged(newConfig: android.content.res.Configuration) {
super.onConfigurationChanged(newConfig)
Core.updateNotificationChannels()
}
......
......@@ -21,16 +21,16 @@
package com.github.shadowsocks.tv
import android.app.Application
import android.content.res.Configuration
import androidx.work.Configuration
import com.github.shadowsocks.Core
class App : Application() {
class App : Application(), Configuration.Provider by Core {
override fun onCreate() {
super.onCreate()
Core.init(this, MainActivity::class)
}
override fun onConfigurationChanged(newConfig: Configuration) {
override fun onConfigurationChanged(newConfig: android.content.res.Configuration) {
super.onConfigurationChanged(newConfig)
Core.updateNotificationChannels()
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment