【发布时间】:2013-03-17 02:45:18
【问题描述】:
在 Android 应用程序的开发过程中,我发现了一组实用程序类型的方法,这些方法已放入静态类中。所有这些方法都在多个 Activity 中使用,其中大多数不需要来自调用 Activity 的任何信息。
但是,我现在有一些方法需要 Activity 的 Context 以及需要 Activity 本身的方法。让我举例说明其中的一些:
- getDeviceNaturalOrientation() - 使用 Activity 的 getWindow().getWindowManager().getDefaultDisplay() 来访问 显示旋转、宽度和高度以确定设备的 自然方向。
- getDeviceOrientation() - 与上面类似,但获取当前 方向
- createFile() - 使用上下文来访问一些资源(字符串)并 创建并展示一些 Toasts
现在,我对这个 Utils 类的主要问题是:
- 到目前为止,每个函数都采用一个 Context 参数,我从我正在使用的任何 Activity 传递该参数,但是可以在 Utils 类中创建一个静态 Context 或 Activity 变量并将其设置在每个 Activity 的开头(像在 onCreate 中)?此变量将用于任何需要 Context 或 Activity 实例的函数。
- 假设不推荐上述方法,是否可以将 Activity 参数传递给方法,或者是否有理由仅将 Activity 作为 Context 传递?我用于上述设备定向功能的方法是特定于 Activity 对象,而不是 Context,因此我要么作为 Activity 传递,要么作为 Context 传递并转换为 Activity(后者听起来很糟糕)。
另外,我非常愿意接受这个 Util 类可能不适用于这些需要 Context/Activity 的方法的想法,因此我欢迎仍然会阻止在每个活动类中复制这些方法的替代方法使用它们。
【问题讨论】:
标签: android android-activity utilities