2012-02-06 1 views
0

속성 변경 후 알림을 다시 예약합니다. 다양한 변수를 읽어야합니다. 문제는, 내가 OnPreferenceChangeListener에서 함수를 실행할 때,이 함수는 우선 순위의 오래된 값을 본다는 것입니다.안드로이드 - 이벤트 대기열 - 환경 설정 후 실행

AWT/Swing 개발에서 알 수있는 일을하고 싶습니다 : 이벤트 대기열에 명령을 추가하여 처리 된 UI 이벤트 이후에 실행되도록합니다. 이는 환경 설정 변경 작업을 마친 후에도 마찬가지입니다. 문제는 ... 나는 Android에서 EventQueue과 비슷한 것을 찾지 못했습니다. 난 단지 runOnUiThread 작업을 발견했습니다. 우리가 이미 UI 스레드에있는 경우 사양에 따라 명령이 즉시 실행되므로 필요하지 않습니다.

그래서, 제발 나를 도와주세요, 내가 무엇을 사용해야합니까? 어쩌면 내가 잘못된 키워드를 검색했습니다 ....

+0

"문제는,이 기능은 이전 값을보고한다 선호도. " - 그렇게해서는 안됩니다. – CommonsWare

+0

이 청취자가 변경을 캔슬 할 수 있기 (위해) 때문에,이 메소드가 종료 한 후에 커밋됩니다. –

+0

'OnSharedPreferenceChangeListener'는 「변경을 취소 할 수 없습니다」. – CommonsWare

답변

1

내 경우에는 환경 설정 변경 단계에서 OnPreferenceChangeListener이 사용되었으므로 단일 환경 설정에 등록되어 환경 설정 값 유효성 검사에 사용해야합니다.

환경 설정이 이미 변경된 후에 호출 할 리스너를 등록해야했습니다. 이 작업은 어떤 환경 설정을 변경 한 후 호출 할 것이다, OnSharedPreferenceChangeListener으로 수행하고 변경 앱을 이미 볼 수 있습니다 : 나는 OnPreferenceChangeListener에서 함수를 실행할 때

PreferenceManager.getDefaultSharedPreferences(this) 
     .registerOnSharedPreferenceChangeListener(
      new OnSharedPreferenceChangeListener() { 

     public void onSharedPreferenceChanged(
       SharedPreferences sharedPreferences, String key) { 
      if (MYKEY1.equals(key) 
        || MYKEY2.equals(key)) { 
       doSomething(); 
      } 
     } 
    });