gpt4 book ai didi

java - 在Android中动态创建应用程序类

转载 作者:行者123 更新时间:2023-12-02 08:41:35 25 4
gpt4 key购买 nike

我有一个第三方库,它通过监听器接口(interface)公开其功能。该库的要求是它在自定义 Android 应用程序类的 onCreate 中进行初始化。

public class CustomApplicationWithListener extends Application implements ThirdPartyListener {
public void onCreate() {
if(feature.isTurnedOn()){
// the library requires an application instance of type ThirdPartyListener
init(this);
}
}
}

我试图将此功能隐藏在功能标志后面,并且想知道是否有一种方法可以从应用程序类中抽象监听器,并且仅在需要该功能时才定义它。只有这样我们才能声明该接口(interface)。我知道自定义应用程序类需要在 list 中定义。有没有一种方法可以在运行时动态决定是否启用该功能,然后使用第三方监听器初始化基本自定义应用程序对象,如下所示,并让主 list 知道我们要使用的版本?

var application: Application?
if(feature.isTurnedOn()){
application = CustomApplicationWithListener()
} else {
application = CustomApplication
}

最佳答案

运行时在 Android 应用程序中生成代码并不是一件容易的事,需要通过Reflection 来完成。查看 Java 的 Reflection API 以了解反射的工作原理。

另一方面,编译时代码生成并不难,可以通过注释处理器来实现。引用这篇博文了解how annotation processors work .

看看动态模块,它允许用户按需下载特定功能。这可能是最适合您的情况的解决方案。设置具有功能标志 View 的 PreferenceFragment 并通过解决方案中的 SharedPreferences 读取值。

我仍然质疑为什么你不想在类应用程序中声明第 3 方库。许多第三方库通常需要在基础应用程序类中实例化。如果库依赖是您的答案,那么可以通过将自己的应用程序拆分为表示、数据和域模块来解决。这至少可以将 android 框架与您的业务逻辑隔离。

关于java - 在Android中动态创建应用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61354071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com