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

SharedPreference가 정적으로로드 한 XML 파일에 키를 넣고 주 활동에 키를로드하십시오. 필요에 따라 환경 설정이 가능해야합니다. –

답변

2

당신은 안드로이드 Application 클래스를 사용할 수 있습니다. Context를 확장하고 전역 응용 프로그램 상태를 저장하는 기본 클래스입니다. 앱 출시, 그것은 MyApplication.onCreate 방법을 시작합니다 지금 때 androidManifest.xml에서

public class MyApplication extends Application 
{ 
    private static MyApplication mSingleton; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     mSingleton = this; 
    } 

    public static MyApplication getInstance() { 
     return mSingleton; 
    } 
} 

, 당신은 <application>

android:name="com.X.Y.Z.MyApplication"를 추가해야합니다.

super.onCreate()을 호출 한 후 getApplicationContext()에 액세스 할 수 있으며 사용자가 싱글 톤을 초기화 할 수 있습니다.

+0

몇 가지 질문이 있습니다. 내 KeyManager를 응용 프로그램으로 확장하고 새 KeyManager(). getKey()를 호출하여 키를 키로 만듭니다. | GetKey는 mSingleton이 null인지 확인합니다. 반환하거나, 컨텍스트와 함께 초기화합니다. 그리고 다른 활동에서 만든 KeyManager가 가비지 수집되면 mSingleton은 그 값을 유지할 것입니까? (정적이라고 가정) | 이 시나리오가 맞습니까, 아니면 제가 잘못 이해 했습니까? – Winks

+0

아니요. KeyManager.getInstance(). getKey()를 호출 할 것입니다. 오직 하나의 객체'mSingleton '이있을 것입니다. 그것은 정적이므로 가비지 수집되지 않습니다. –

관련 문제