Browse Source

pref: 改为使用AppStartup默认初始化

drake 2 years ago
parent
commit
4426830481

+ 1 - 0
net/build.gradle

@@ -44,6 +44,7 @@ android {
 
 dependencies {
     implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation 'androidx.startup:startup-runtime:1.0.0'
 
     compileOnly "com.squareup.okhttp3:okhttp:$okhttp_version"
 

+ 7 - 4
net/src/main/AndroidManifest.xml

@@ -10,11 +10,14 @@
         android:networkSecurityConfig="@xml/network_security_config"
         tools:targetApi="n">
         <provider
-            android:name=".component.NetInitializer"
-            android:authorities="${applicationId}.drake.netInit"
-            android:enabled="true"
+            android:name="androidx.startup.InitializationProvider"
+            android:authorities="${applicationId}.androidx-startup"
             android:exported="false"
-            android:multiprocess="true" />
+            tools:node="merge">
+            <meta-data
+                android:name="com.drake.net.internal.NetInitializer"
+                android:value="androidx.startup" />
+        </provider>
     </application>
 
 </manifest>

+ 1 - 1
net/src/main/java/com/drake/net/NetCoroutine.kt

@@ -2,7 +2,7 @@
 
 package com.drake.net
 
-import com.drake.net.interfaces.NetDeferred
+import com.drake.net.internal.NetDeferred
 import com.drake.net.request.BodyRequest
 import com.drake.net.request.Method
 import com.drake.net.request.UrlRequest

+ 0 - 47
net/src/main/java/com/drake/net/component/NetInitializer.kt

@@ -1,47 +0,0 @@
-package com.drake.net.component
-
-import android.app.Application
-import android.content.ContentProvider
-import android.content.ContentValues
-import android.database.Cursor
-import android.net.Uri
-import com.drake.net.NetConfig
-
-/**
- * 使用内容提供者自动初始化[NetConfig.app], 仅应用主进程下有效
- * 在其他进程使用Net请手动在Application中初始化[NetConfig.initialize]
- */
-internal class NetInitializer : ContentProvider() {
-
-    override fun onCreate(): Boolean {
-        val application = context?.applicationContext as? Application ?: return false
-        NetConfig.app = application
-        return false
-    }
-
-    override fun delete(uri: Uri, selection: String?, selectionArgs: Array<String>?): Int {
-        return 0
-    }
-
-    override fun getType(uri: Uri): String? {
-        return null
-    }
-
-    override fun insert(uri: Uri, values: ContentValues?): Uri? {
-        return null
-    }
-
-    override fun query(
-        uri: Uri, projection: Array<String>?, selection: String?,
-        selectionArgs: Array<String>?, sortOrder: String?
-    ): Cursor? {
-        return null
-    }
-
-    override fun update(
-        uri: Uri, values: ContentValues?, selection: String?,
-        selectionArgs: Array<String>?
-    ): Int {
-        return 0
-    }
-}

+ 1 - 1
net/src/main/java/com/drake/net/interfaces/NetDeferred.kt → net/src/main/java/com/drake/net/internal/NetDeferred.kt

@@ -1,4 +1,4 @@
-package com.drake.net.interfaces
+package com.drake.net.internal
 
 import com.drake.net.exception.NetException
 import com.drake.net.exception.URLParseException

+ 19 - 0
net/src/main/java/com/drake/net/internal/NetInitializer.kt

@@ -0,0 +1,19 @@
+package com.drake.net.internal
+
+import android.content.Context
+import androidx.startup.Initializer
+import com.drake.net.NetConfig
+
+/**
+ * 使用AppStartup默认初始化[NetConfig.app], 仅应用主进程下有效
+ * 在其他进程使用Net请手动在Application中初始化[NetConfig.initialize]
+ */
+internal class NetInitializer : Initializer<Unit> {
+    override fun create(context: Context) {
+        NetConfig.app = context
+    }
+
+    override fun dependencies(): MutableList<Class<out Initializer<*>>> {
+        return mutableListOf()
+    }
+}