2014-11-08 71 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

相關問題