Commit 33e5d4dd authored by Mygod's avatar Mygod

Late init WorkManager

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