codecamp

Micronaut 安卓支持

由于 Micronaut 依赖注入基于注解处理器而不依赖于反射,因此当使用 Android 插件 3.0.0 或更高版本时,它可以在 Android 上使用。

这使您可以为 Android 客户端和服务器实现使用相同的应用程序框架。

配置您的 Android 版本

首先,使用 annotationProcessor 依赖配置将 Micronaut 注释处理器添加到处理器类路径。

在 Android 构建配置的 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 作为构建的一部分,您可能还需要禁用无效包检查,因为 Android 包含一个硬编码检查,除非您使用 Dagger,否则将 javax.inject 包视为无效:

在 build.gradle 中配置 lint

android {
    ...
    lintOptions {
        lintOptions { warning 'InvalidPackage' }
    }
}

您可以在 Android 文档中找到有关配置注释处理器的更多信息。

Micronaut inject-java 依赖项使用 Android Java 8 支持功能。

启用依赖注入

正确配置类路径后,下一步就是启动 ApplicationContext。

以下示例演示了为此目的创建 android.app.Application 的子类:

示例 Android 应用程序类

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
        });
    }
}
  1. 扩展 android.app.Application 类

  2. 使用 ANDROID 环境运行 ApplicationContext

  3. 注册一个 ActivityLifecycleCallbacks 实例以允许 Android Activity 实例的依赖注入


Micronaut Beans 和 Spring
Micronaut 环境
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Micronaut 独立命令行应用程序

Micronaut 安全

Micronaut 多租户

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }