W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
由于 Micronaut 依賴注入基于注解處理器而不依賴于反射,因此當使用 Android 插件 3.0.0 或更高版本時,它可以在 Android 上使用。
這使您可以為 Android 客戶端和服務(wù)器實現(xiàn)使用相同的應(yīng)用程序框架。
配置您的 Android 版本
首先,使用 annotationProcessor 依賴配置將 Micronaut 注釋處理器添加到處理器類路徑。
在 Android 構(gòu)建配置的 annotationProcessor 和 compileOnly 范圍中包含 Micronaut micronaut-inject-java 依賴項:
Android build.gradle 示例
dependencies {
...
annotationProcessor "io.micronaut:micronaut-inject-java:3.8.6"
compileOnly "io.micronaut:micronaut-inject-java:3.8.6"
...
}
如果您將 lint 作為構(gòu)建的一部分,您可能還需要禁用無效包檢查,因為 Android 包含一個硬編碼檢查,除非您使用 Dagger,否則將 javax.inject 包視為無效:
在 build.gradle 中配置 lint
android {
...
lintOptions {
lintOptions { warning 'InvalidPackage' }
}
}
您可以在 Android 文檔中找到有關(guān)配置注釋處理器的更多信息。
Micronaut inject-java 依賴項使用 Android Java 8 支持功能。
啟用依賴注入
正確配置類路徑后,下一步就是啟動 ApplicationContext。
以下示例演示了為此目的創(chuàng)建 android.app.Application 的子類:
示例 Android 應(yīng)用程序類
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.env.Environment;
public class BaseApplication extends Application { (1)
private ApplicationContext ctx;
@Override
public void onCreate() {
super.onCreate();
ctx = ApplicationContext.run(MainActivity.class, Environment.ANDROID); (2)
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { (3)
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
ctx.inject(activity);
}
... // shortened for brevity; it is not necessary to implement other methods
});
}
}
擴展 android.app.Application 類
使用 ANDROID 環(huán)境運行 ApplicationContext
注冊一個 ActivityLifecycleCallbacks 實例以允許 Android Activity 實例的依賴注入
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: