2012-11-08 2 views
1

이 문제에 대한 설명을 찾으려고했지만 아무 것도 찾을 수 없었습니다.활동과 서비스 사이의 환경 설정

백그라운드에서 작동하는 원격 서비스가 있습니다. 이 서비스는 SharedPreference에서 일부 기본 설정을 읽습니다.

PreferenceActivity (활동 및 서비스가 동일한 응용 프로그램 및 동일한 패키지에 속함)에서 환경 설정을 변경할 때 나는 문제가 발생합니다. 나는 환경 설정을 변경하고 정확하게 저장하지만 서비스가 환경 설정을 읽는 즉시 서비스는 환경 설정을 수정하지 않고 PreferenceActivity에서 수정할 수없는 일부 내부 환경 설정 만 수정합니다. 환경 설정은 '재설정'되어 있고 서비스 재설정 된 값을 가져옵니다.

CheckBoxPreference에서 이와 같은 현상이 발생합니다. 나는 그들이 다른 것들을 가지고 있지 않기 때문에 다른 종류의 선호도에서 일어날 지 모른다.

환경 설정을 변경 한 후에 서비스를 다시 시작해야합니까? 아니면 서비스의 환경 설정을 '새로 고침'해야합니까? 어쩌면 이것이 HoloEverywhere 사용과 관련된 문제일까요?

PreferenceManager.wrap(context, getSharedPreferencesName(context), Context.MODE_MULTI_PROCESS); 

이 코드는 HoloEverywhere 특정이며이 동일 :

가 나는 다음과 같은 코드를 사용 SharedPreference 개체를 얻으려면

context.getSharedPreferences (getSharedPreferencesName (컨텍스트), Context.MODE_MULTI_PROCESS) ;

'getSharedPreferencesName()'은 "package.name_preferences"로 구성된 문자열을 반환합니다.

감사합니다.

답변

3

백그라운드에서 작동하는 원격 서비스가 있습니다.

왜 서비스를 원격으로 설정 했습니까?

환경 설정을 변경했지만 올바르게 저장되지만 서비스가 환경 설정을 읽으면 서비스는 환경 설정을 수정하지 않고 환경 설정에서 수정할 수없는 내부 기본 설정 만 수정합니다. 환경 설정은 다음과 같습니다. '재설정'되고 서비스가 재설정 된 값을 가져옵니다.

서비스를 원격으로 설정했기 때문입니다. 매니 페스트에서 android:process 속성을 제거하기 만하면 모든 구성 요소가 동일한 프로세스에서 실행되며이 문제는 사라집니다. 길을 따라 가면서 RAM과 배터리를 많이 소모하지 않으므로 사용자를 더욱 행복하게 만들 수 있습니다.

환경 설정을 변경 한 후에 서비스를 다시 시작해야합니까? 아니면 서비스의 환경 설정을 '새로 고침'해야합니까?

당신이 진정으로 원격 서비스를 필요에 대한 정당한 이유가있는 경우 - 그리고 이럴 내가 자발적으로 내 머리를 자라게하는 큰 기회가 - 당신은 AFAIK, 서비스의 프로세스를 다시 시작해야합니다가. SharedPreferences은 프로세스마다 캐시되므로 프로세스를 다시 시작해야만 안드로이드가 디스크에서 SharedPreferences을 다시로드하도록 강제 할 수있는 방법을 모르겠습니다.

또는 원격 서비스를 사용할 수 없습니다. 너의 선택이야.

+0

이 서비스는 새 카메라 사진을 수신하는 백그라운드에서 계속 실행해야하므로 원격 서비스를 사용해야 자동으로 업로드됩니다. 답장을 보내 주셔서 감사합니다. –