- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的场景
我必须实现一个“模块化”android 应用程序。有一个核心模块,我应该能够从中调用其他模块。每个模块为用户提供不同的功能。想象一下我正在制作一份城市指南,然后一个模块可能包含一张带有 POI 的 map ,另一个模块包含一个事件日历,第三个模块包含预定义的城市指南。这些模块包含要在核心模块的 Activity 中加载的 View (例如每个模块放置其项目/图片的仪表板)。它们还包含应调用的 Activity (例如当用户点击仪表板上的项目时)。据我所知,我只需要核心模块中的数据库和/或首选项。 “插件模块”使用核心模块的类(实用程序),例如连接到后端时。
我在 iOS 上的解决方案
对于 iOS,我通过 XCode 中的目标实现了这一点。我有一个项目,根据客户的需求,我只编译相关模块。如果用户可以随时安装模块,而不需要重新安装“核心”应用程序,那就更好了。
我在 Android 上遇到的问题
在 SO 中,我已经找到了各种解决方案,例如库项目,从 Eclipse 切换到 Android Studio + 东西,使用包管理器和广播接收器......但我仍然不明白......android 的模块化如何应用要实现?
以下是我看到的一些具体问题:
库:我的模块都使用核心模块的类,所以它们不是独立的。根据我需要的灵 active ,我通过使用接口(interface)/继承来实现模块化。
至少,我需要的是能够使用相同的代码将具有功能 A 和 B 的应用程序交付给一位客户,同时将具有 B 和 C 的应用程序交付给另一位客户。而且,直到现在,我都不知道如何实现它。
PS:我不想使用脚本,我对此不熟悉。
最佳答案
我不认为这个“模块化”应用程序与一个应用程序有什么不同,它有几个包,每个包都包含独立的功能,适用于一些设置列表或外部参数(由用户或您提供)。
我的方法是拥有一个“主”包。该包将包含您上面提到的共享功能,并作为您的应用程序的中心。然后我会为不同的“附加”功能创建单独的子包。这允许您通过简单的 import 语句仍然使用主包中的代码。根据您的描述,这些附加功能可能应该作为 Fragment
实现。 Fragment
几乎是一个独立的应用程序,只是它由 Activity
“托管”。根据这些附加功能的使用方式(我不知道它们是否与 UI 相关,只是后台处理等),您可以轻松拥有 4 个不同 fragment 中的 3 个,并选择在运行时仅加载其中的 1 个或 3 个或 2 个。
为了控制代码的哪些部分被使用,我只需要设置一个简单的切换类(它甚至可以是第一个启动的 Activity 的一部分,我无法从你上面的描述中看出)。在这里,我会检查一些设置,指示应用程序的哪些部分将是“Activity 的”。这可以使用 SharedPreferences
轻松定义以存储特定配置,例如在交付最终项目之前使用 A 和 B。然后,您只需初始化所需的 fragment 并显示它们 (1) 在 Fragment
布局元素或 FrameLayout
中单独显示; (2) 在一些其他 View 结构中统称为 ViewPager
。
我关注了您在 BroadcastReceiver
上的链接,但我仍然不确定为什么它们“不符合推荐”。正确使用 BroadcastReceiver
非常有用。我倾向于使用 LocalBroadcastManager
和 BroadcastReceiver
在某些 AsyncTask
时通知应用程序的其他部分,例如下载了很多资料,完成了。然后,应用程序的这些部分可以访问本地数据库或处理自己下载的信息。如果您需要的话,我不会使用 BroadcastReceiver
来调制应用程序的某些部分。我只想使用 SharedPreference
文件在运行时设置配置。
关于android - 模块化 android 项目 - 怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603515/
每个人(希望)都在努力实现代码模块化。我想要做的是有 1 个主要的 Sass 文件,它导入我的所有模块,这些模块是局部的,如果需要,这些局部可以调用它们自己的局部组。我想要的是,不是在我的代码库中调用
如何在 xslt 转换中模块化一组重复的输出?例如,我有如下内容(伪代码)。 并
假设我有几个简单的模型驻留在 food.py 中: import peewee as pw db = pw.SqliteDatabase('food.db') class BaseModel(pw.M
我正在开始一个新的 Angular 项目并尝试模块化我的所有代码——我厌倦了拥有大量的 app.js 文件,而且因为我正在为一家公司开发一个平台,所以我的代码整洁且模块化以便于测试、清洁和易于过渡到
所以,有人告诉我,在 nodeJS 中传递 request 和或 response 变量是“不好的做法”。但这意味着你的大部分代码都必须在 server.js 文件中,这使得它变得困惑而且有点难看。
有一个想法:函数(在 FP 中)可以以与 OOP 中的组件类似的方式组成。对于 OOP 中的组件,我们使用接口(interface)。对于函数,我们可以使用委托(delegate)。目标是实现分解、模
有没有办法将 SQL 代码模块化,使其更具可读性和可测试性? 我的 SQL 代码经常变成一长串复杂的嵌套连接、内连接等,难以编写和调试。相比之下,在像 Javascript 或 Java 这样的过程语
我想知道大公司如何倾向于在他们的页面上模块化组件。 Facebook 就是一个很好的例子: There's a team working on Search that has its own CSS,
我正在寻找在 WPF 中构建模块化应用程序模型的解决方案。目前,我使用 Devexpress POCO MVVM 来构建我的 WPF 应用程序,但缺乏模块化的可扩展性,我正在寻找适合我当前设计并允许构
我制作了一个 Gradle 项目,它使用类加载器从子目录资源/文本中加载文本文件。此时它可以工作,但是当我将项目转换为模块化 JavaFX 程序时,相同的类加载器函数会给出 NullPointerEx
假设我有一个通用类模块: export class MyCalc { data = {} ... } 并说我想扩展更多功能: export class MyCalcLoader {
我的模板文件变得越来越大并且过于复杂(大约 200 行(长)代码,9 级缩进),因此它也变得容易出错。我正在寻找一个简单的解决方案,它可以让我轻松访问 $scope 变量和函数。 我的第一个想法是使用
许多人说要将外部 CSS 和 JavaScript 文件的数量保持在最低限度以减少往返时间。例如,Google 建议每个网站最多分别使用两个 CSS 和 JavaScript 文件。 问题是,作为“模
我试图找出为什么我的 Promise 链执行无序,尽管编写了一个非嵌套的 then 链。我的函数已经模块化,以减少链中发生的代码膨胀(我期望有五个 then 方法),并且我不确定这些模块中的某些内容是
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我使用 create-react-app 创建了一个样板 React 应用程序。 现在,在我的 App.js 文件中 import classes from './App.css'; 我做到了
Java 模块系统是否应该阻止模块通过反射访问其他模块,而不声明正确的模块依赖关系? 例如,在编译这个 hello world Java 11 类时,它从另一个模块调用类,正如预期的那样,它不会编译,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我的应用程序上有许多不同的“控制元素”:下拉菜单、选项卡、菜单等。在同一页面上,有许多相同的控件。当编写 JavaScript 来处理与每个控件关联的不同事件时,我试图使我的代码尽可能干燥。挑战之一是
处理以下场景的模块化方式是什么:应用程序具有所有标题标签(h1、h2、h3 等)的通用样式。特定组件 Widget.jsx 可以使用这些标题中的任何一个,但 h1 标签具有特殊样式。在 CSS 的“旧
我是一名优秀的程序员,十分优秀!