我应该在 Android 应用程序中将全局方法和变量放在哪里?

2024-02-03

当我编写方法或使用成员变量时,我经常发现需要在应用程序中共享它们。但他们应该去哪里呢?

我可以对 Activity 进行子类化,但是一旦我使用 MapView 并被迫使用 MapActivity,这种情况就会失败,因此并非所有活动都继承自我的子类。我有办法解决这个问题吗?

在继承不适用的情况下,我倾向于将泛型方法和成员变量放入 Application 对象的子类中,但我发现它会创建一堆代码,因为每个类都需要通过 via 获取对应用程序对象的访问权限上下文,否则我必须将其传递下去。

我怀疑我最好创建 MyApplication.getInstance() 并将所有内容保留在单例中,而不是通过应用程序类向下传递应用程序对象。但在我想看看你们要说什么之前


如果您想在活动之外访问“全局单例”并且不想通过Context通过所有涉及的对象来获取单例,您可以按照您的描述,在应用程序类中定义一个静态属性,该属性保存对其自身的引用。只需初始化属性onCreate() method.

例如:

public class ApplicationController extends Application {
    private static ApplicationController _appCtrl;

    public static ApplicationController getAppCtrl()
    {
         return _appCtrl;
    }
}

一个资源示例:因为Application也可以获取资源,您可以简单地在定义返回它们的静态方法时访问它们,例如:

public static Resources getAppResources()
{
    return _appCtrl.getResources();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在 Android 应用程序中将全局方法和变量放在哪里? 的相关文章

随机推荐

  • Winforms DataBind 到控件的 Visible 属性

    将数据绑定到控件的可见属性时是否存在任何已知问题 无论我的属性是什么 该控件始终不可见 Public ReadOnly Property IsRibbonCategory As Boolean Get Return True End Get
  • 从 Azure DevOps 导出测试结果

    我可能遗漏了一些东西 但找不到从 Azure DevOps 中项目的构建管道执行页面导出测试运行结果的方法 有一个 下载日志 当然 从技术上讲 您可以在其中找到来自测试执行步骤的日志以及其他内容 但这似乎不是定期获取此类数据以进行法规 审计
  • 如何使用头文件签名(幻数)检查文件类型?

    通过输入文件及其扩展名 我的代码成功地从 幻数 中检测到文件的类型 magic numbers png bytes 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A jpg bytes 0xFF 0xD8 0x
  • Laravel 5.4 - php artisan 缓存:使用“文件”缓存驱动程序时清除不会清除缓存文件

    Laravel 5 4 应用程序 CACHE DRIVER被设定为file and QUEUE DRIVER被设定为sync in env 当我跑步时php artisan cache clear它说Cache cleared succes
  • 每个 UDP 数据报的 Netty 不同管道

    我们有一个已经在 TCP IP 中实现的服务器 但现在我们要求该协议也支持 UDP 发送的每个 UDP 数据报都包含我需要解码的所有内容 因此这是一个非常简单的回复和响应系统 数据报中的数据由换行符分隔 服务器启动时的引导代码如下所示 SE
  • 如何向 NuGet 包添加 Unity 支持?

    如何将包发布到支持 Unity 游戏引擎 的 NuGet 另外 我是否需要安装 Unity 来编译它 或者针对特定的框架版本就足够了 如何将包发布到支持 Unity 游戏引擎 的 NuGet 只需按照以下说明进行操作即可the doc ht
  • Spring MVC:如何修改从spring控制器发送的响应?

    我有一个使用 Spring MVC 3 1 3 的应用程序和使用 Dojo 1 4 开发的 UI 该应用程序有几个控制器来处理通过上传的二进制文件dojo io iframe send 控制器发送一个 json 响应 该响应必须用
  • 面板未获得焦点

    我继续在我的简单图形程序中 使用 C 编写某种键盘导航 而我又遇到了麻烦 我的问题是我想处理键盘输入以移动图层 用鼠标移动图层已经可以很好地工作 但控件没有获得焦点 此控件既不会触发 KeyUp KeyDown KeyPress 也不会触发
  • 使用 Zend 框架进行连接更新

    我试图在 mysql 上使用 zend 更新带有连接的表 下面是我想通过 zend 执行的查询 已经谢谢了 UPDATE tbproduto LEFT JOIN SELECT codigo as codTipoProduto cdTipo
  • 如何从.Net Core 3创建Windows服务[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近我需要将 Net Core 3 0控制台应用程序转换为Windows服务 由于我不需要将此流程移植
  • Gif 帧持续时间似乎比预期慢

    我正在使用枕头图像库创建 GIF 我遇到了一个问题 我试图以尽可能最小的帧持续时间使某些帧闪烁得非常快 但是当我将帧的持续时间设置为 1 可能的最低持续时间 GIF 的持续时间为 100 实际上它的持续时间似乎比预期的要长 我用一个简单的方
  • 如何使一个 跨越两列表中的两列?

    如何使用 HTML 和 CSS 创建像上面示例一样的表格 我尝试过以下方法 table tr td style width 50 TEXT td td style width 50 TEXT td tr tr td style width
  • 以编程方式创建 UITableView

    我在 Xcode 4 6 中有一个使用故事板的应用程序 我将 UITableView 添加到视图控制器类中 它按预期工作 然而 当我尝试删除故事板中的 UITableView 并以编程方式将其添加回同一个类时 我遇到了两个具体问题 1 虽然
  • 具有自定义身份验证的 ASP.NET Web API

    我正在寻求帮助创建具有自定义用户名 密码身份验证的 Web API 我有自己的数据库来验证用户 我不想使用 Windows 身份验证 我希望能够用类似的属性来装饰我的 Web api 调用 Authorize 这样在未登录的情况下进行的调用
  • VSCode:无法导入 Golang 包

    我正在 GoPath 中编写一个 Go 项目 并使用 Redigo 包连接到 Redis 服务器 应用程序运行良好 但是在 VSCode 中 包导入时出现这个烦人的错误 这导致 VSCode 无法提供智能感知建议 无法导入 github c
  • 具有 facebook 身份验证和唯一 ID 的 Firebase 规则

    我正在寻找一些建议或可能的解决方案来加强我的火力规则 这是我在 Firebase 中的用户树 users male uid female uid UID 将是创建帐户时的纪元时间戳 它是一个有符号整数 这些是 firebase 规则 基本上
  • 为什么我不能在此查询中使用WITH(通用表表达式)?

    这只是一个 SSCCE CREATE TABLE test i INTEGER NOT NULL WITH max i AS SELECT MAX i FROM test SELECT FROM test WHERE max i i lt
  • jQuery 的 :first 和 :last 在元素的第一个子元素上

    我有一些简单的表 多个 全部带有 class parent 其中有多个 tr 行 这 td 这些行中的单元格有自己的表格 我正在尝试瞄准 tr 的行first 父 表 如下所示 HTML table class parent tr lt m
  • pip3读取超时错误

    sudo pip3 install scikit learn 任何模块实际上只是使用最近的尝试 sudo pip3 install U scikit learn sudo H pip3 install U scikit learn sudo
  • 我应该在 Android 应用程序中将全局方法和变量放在哪里?

    当我编写方法或使用成员变量时 我经常发现需要在应用程序中共享它们 但他们应该去哪里呢 我可以对 Activity 进行子类化 但是一旦我使用 MapView 并被迫使用 MapActivity 这种情况就会失败 因此并非所有活动都继承自我的