2016-07-15 3 views
2

Int whereent 절을 android에서 사용합니다. Where 절을 처음 7 ~ 8 번 사용하면 원하는 출력을 얻을 수 있지만 특정 시간이 지나면 실패하고 제공합니다. 결과는 0입니다.realmDB에 데이터가 있어도 where 절이 0을 반환합니다.

Realm realm = Realm.getInstance(ApplicationController.getInstance().getRealmConfig(Constants.SCHEMA_LIVE)); 
      RealmResults<RContactDTO> localContacts = realm.where(RContactDTO.class).equalTo("operationType", HttpOperation.PUT.name()).findAll(); 
      Utils.Log("update contact count ::: " + localContacts.size(), Utils.LogType.DEBUG); 
      ArrayList<ContactDTO> contactList = new ArrayList<ContactDTO>(); 
      RContactDTO rContactDTO = null; 
      for(RContactDTO rContact : localContacts){ 
       contactList.add(new ContactDTO(rContact)); 
      } 

realmDB를 내보내 실제 데이터를 검사했습니다.

+0

그래서 같은 코드를 9 번 실행하면 8 번 작동하고 9 번 작동하지 않습니까? –

+0

예 9 번 이후 무작위로 작동합니다. 예측할 수 없습니다 –

+0

시도 사이에 아무 일도 일어나지 않습니까? –

답변

1

나는 스위프트에서 같은 문제가 있었다. 영역에 자동 새로 고침과 관련된 문제가 있습니다.

절을하기 전에 realm.refresh()를 사용하십시오.

+0

덕분에 부적처럼 작동합니다. –

+1

잠깐, 뭐라 구요? 영역 -Java는 0.90.0에서'refresh()'를 사용하지 않으며 1.0.0에서 제거했습니다. 이것은 해결책이 아닙니다. 자동 새로 고침은 실제로 루프하는 루퍼 스레드에서 올바르게 작동합니다. non-looper 쓰레드는'waitForChange()'를 사용하여 갱신하도록되어있다. – EpicPandaForce

2

IntentService에서 루핑하지 않는 루퍼 스레드를 사용 중입니다. 따라서 Realent는 IntentService의 스레드에서 자동 업데이트 할 수 없으며 변경 사항을 기다릴 수도 없습니다. 따라서 해결 방법은 일반 스레드를 사용하고 IntentService 대신 waitForChange()을 사용하거나 작업을 위해 더 이상 필요하지 않은 영역을 닫은 다음 getDefaultInstance()으로 다시 여는 것입니다.

+0

나는 확실히 그것을 시도 하고이 스레드에서 알려드립니다 –

관련 문제