Android - 在应用程序启动时加载属性文件
是否有一部分代码始终在应用程序启动时执行,而不管活动,我们可以在哪里访问上下文?Android - 在应用程序启动时加载属性文件
我需要api键为我的应用程序。我将它们存储在资产中的.properties文件中,并且每次需要加载时都可以从context.getRessources().getAssets()
访问此文件。
key = getKey(getContext())
我想有一个静态变量存储他们,一旦他们已经成功访问过一次。但因为我不知道什么时候他们会在第一次访问,请,我需要做的是这样
if(isKeySet()){
key = getKey();
} else {
setKey(getContext());
}
这是不理想的,因为我还是要过的上下文。如果我能确保代码始终执行(与访问上下文)的一个组成部分,我可以在这里加载它们,每个后续调用
key = getKey();
您可以使用Android Application类。它扩展了Context,并且是存储全局应用程序状态的基类。
public class MyApplication extends Application
{
private static MyApplication mSingleton;
@Override
public void onCreate()
{
super.onCreate();
mSingleton = this;
}
public static MyApplication getInstance() {
return mSingleton;
}
}
在androidManifest.xml
,你需要在<application>
添加android:name="com.X.Y.Z.MyApplication"
现在,当你的应用程序的推出,将推出MyApplication.onCreate
方法。
呼叫super.onCreate()
后,您可以访问getApplicationContext()
并可以初始化您的单身人士。
有关这方面的一些问题。我会让我的KeyManager扩展应用程序,并调用新的KeyManager().getKey()来键入密钥。 | GetKey将检查mSingleton是否为null,返回它,或者用它的上下文|进行初始化当我在另一个活动中创建的KeyManager被垃圾收集时,mSingleton会保留它的值? (假设它是静态的)|这种情况是正确的,还是我误解了某些东西? – Winks 2014-11-08 15:53:14
不可以。您可以调用'KeyManager.getInstance()。getKey()'。将只有一个对象'mSingleton'。它不会被垃圾收集,因为它是静态的。 – 2014-11-08 16:01:49
将密钥放入SharedPreference加载的xml文件中,并将其加载到主活动中。无论需要,Prefs都应该是可以解决的。 – 2014-11-08 17:06:07