2016-11-10 1 views
2

사용 방법 RxJava 업데이트 UI Android에서 1 초마다? 나는 이런 식으로 뭔가 할 노력하고있어 :다른 스레드의 RxJava Thread.sleep

for (int i = 0; i <10 ; i++) { //test 
       rx.Observable.just(getSleep()) 
         .subscribeOn(Schedulers.newThread()) 
         .observeOn(AndroidSchedulers.mainThread()) 
         .subscribe(v->updateTime());//update textView 
     } 

    private <T> int getSleep() { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     return 0; 
    } 

을하지만 Thread.sleep를() UI 스레드에서하고. 내가 뭘 잘못 했니? 코드는 다음 getSleep()가 UI 스레드에서 실행됩니다 UI 스레드에서 실행중인 경우

답변

2
Observable.interval(1, TimeUnit.SECONDS) //emits item every second 
      .observeOn(AndroidSchedulers.mainThread()) //switches thread from computation (interval's default) to UI 
      .subscribe(i -> updateUI()); //update your textView 
+0

)이'onPause()'를 구독 취소하고'onResume()'을 다시 구독하는 것을 잊지 마십시오. –

1
rx.Observable.just(getSleep()) 
        .subscribeOn(Schedulers.newThread()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(v->updateTime());//update textView 

그것은

int stuff = getSleep(); 
rx.Observable.just(stuff) 
        .subscribeOn(Schedulers.newThread()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(v->updateTime());//update textView 

같다. 전화를 지연해야합니다 (예 : fromCallable 사용).

 rx.Observable.fromCallable(() -> getSleep()) 
        .subscribeOn(Schedulers.newThread()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(v->updateTime());//update textView 
+0

나는 스톱워치 같은 것을 할 노력하고있어. 'fromCallable' 필요에 따라 상황을 수정하지 않았습니다 ( –