2014-11-08 3 views
0

Есть ли какая-то часть кода, которая всегда выполняется при запуске приложения, независимо от активности, где у нас есть доступ к контексту?Android - Загрузить файл свойств при запуске приложения

Мне нужны ключи api для моего приложения. Я сохраняю их в файле .properties в свойстве и получаю доступ к этому файлу с context.getRessources().getAssets() каждый раз, когда мне нужно их загрузить.

key = getKey(getContext()) 

Я бы хотел иметь статическую переменную, хранящую их, как только они были успешно доступны один раз. Но так как я не знаю, когда они будут доступны в первый раз, мне нужно сделать что-то вроде

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

Который не является идеальным, так как я все еще должен пройти контекст. Если бы я мог убедиться, что одна часть кода выполняется всегда (с доступом к контексту), я мог бы загрузить их здесь и каждый последующий вызов

key = getKey(); 
+1

введите ключи в файл xml, загруженный SharedPreference static, и загрузите его в свою основную деятельность. Prefs должны быть адресованы, когда это необходимо. –

ответ

2

Вы можете использовать класс Android Application. Он расширяет контекст и является базовым классом для хранения состояния глобального приложения.

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, вам нужно добавить android:name="com.X.Y.Z.MyApplication" в <application>

Теперь, когда ваш запуск приложения, она будет запущена MyApplication.onCreate метод.

После звонка в super.onCreate() у вас есть доступ к getApplicationContext() и вы можете инициализировать свой синглтон.

+0

Некоторые вопросы относительно этого. Я бы сделал мой KeyManager расширяет приложение и Call new KeyManager(). GetKey(), чтобы закрепить ключ. | GetKey будет проверять: mSingleton is! Null, вернуть его, или же инициализировать его контекстом | И когда KeyManager, который я создал в другом действии, - сбор мусора, mSingleton сохранит его ценность? (если он статичен) | Правильно ли этот сценарий, или я что-то не понял? – Winks

+0

Нет. Вы бы назвали 'KeyManager.getInstance(). GetKey()'. Будет только один объект 'mSingleton'. Это не будет сбор мусора, потому что он статичен. –

Смежные вопросы