Android应用程序级别范围变量

时间:2011-06-30 19:04:10

标签: android architecture

据我所知,没有可用于定义共享逻辑/数据的应用程序级别范围,并且每个活动本质上都是由清单捆绑在一起的独立应用程序...

但是我有一组用户访问权限,我通过网络服务调用获得这些权限,并且不想在每个活动onCreate()中进行此调用。

我在应用程序中使用SharedPreferences,但由于权限不是可由用户编辑的,因此Android设备上的平面文件曝光感觉就像处理此问题的不安全方式。

如果应用程序重新启动,我确实需要重新请求此信息,所以我认为最便宜的是将它存储在变量中。

我知道IntentExtras,但我们谈论的是设置“对象”,而不是原始类型。

正确处理这种情况的方法?

2 个答案:

答案 0 :(得分:28)

您实际上可以创建一个“应用程序”类,可用于实质上创建应用程序范围的设置。

只需创建一个新类并扩展Application,然后设置任何类成员和适当的getter / setter方法,您就可以在整个应用程序中访问它们。

然后,您需要按如下方式更新清单:

<application android:icon="@drawable/logo"
             android:label="@string/app_name"
             android:name=".application.CustomApplication">

然后在任何活动中,您可以按如下方式访问它:

CustomApplication app = ((CustomApplication)getApplication());

答案 1 :(得分:1)

我认为使用共享首选项是相当安全的。只有拥有root,自定义roms和黑客知识的高级用户才能抓住机会! (我甚至不确定这是否可行)。

除了SharedPreferences,您还可以实现自定义Application对象并在那里保留您的权限。

无论如何,作为一名开发人员,我认为更有可能在请求中的某个地方被黑客入侵,以获取用户权限(使用https等)并且我的应用程序被反编译。