2014-11-08 45 views
0

是否有一部分代码始终在应用程序启动时执行,而不管活动,我们可以在哪里访问上下文?Android - 在应用程序启动时加载属性文件

我需要api键为我的应用程序。我将它们存储在资产中的.properties文件中,并且每次需要加载时都可以从context.getRessources().getAssets()访问此文件。

key = getKey(getContext()) 

我想有一个静态变量存储他们,一旦他们已经成功访问​​过一次。但因为我不知道什么时候他们会在第一次访问,请,我需要做的是这样

if(isKeySet()){ 
    key = getKey(); 
} else { 
    setKey(getContext()); 
} 

这是不理想的,因为我还是要过的上下文。如果我能确保代码始终执行(与访问上下文)的一个组成部分,我可以在这里加载它们,每个后续调用

key = getKey(); 
+1

将密钥放入SharedPreference加载的xml文件中,并将其加载到主活动中。无论需要,Prefs都应该是可以解决的。 – 2014-11-08 17:06:07

回答

2

您可以使用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()并可以初始化您的单身人士。

+0

有关这方面的一些问题。我会让我的KeyManager扩展应用程序,并调用新的KeyManager().getKey()来键入密钥。 | GetKey将检查mSingleton是否为null,返回它,或者用它的上下文|进行初始化当我在另一个活动中创建的KeyManager被垃圾收集时,mSingleton会保留它的值? (假设它是静态的)|这种情况是正确的,还是我误解了某些东西? – Winks 2014-11-08 15:53:14

+0

不可以。您可以调用'KeyManager.getInstance()。getKey()'。将只有一个对象'mSingleton'。它不会被垃圾收集,因为它是静态的。 – 2014-11-08 16:01:49

相关问题