2012-10-07 5 views
1

이전의 정적 날짜를 사용하는 활동 내에 매우 기능적인 함수가 있습니다. DateUtils.getRelativeDateTimeString을 사용하여 상대적인 문자열로 서식을 지정합니다 ("3 분 전"과 같이됩니다). 하지만 TextView은 활동이 열려있는 한 업데이트 된 상태로 유지해야합니다.간단한 반복 텍스트 업데이트를 계속 작성하십시오.

연속 작업 (무한 루프) 또는 짧은 간격 내에서 실행되는 연속 작업 두 번째. 배경 서비스 등을하지 않고이 작업을 수행하는 방법

+0

AsyncTask를 사용하고'doInBackground'에서 변환을 수행하고'onProgressUpdate '에 게시하십시오. – Wenhui

답변

1

을 할 수 있습니다 당신이 취소 할 경우 AsyncTask를

다음
private class BackgroundCoversionTask extends AsyncTask< String, String, Void >{ 

    @Override 
    protected Void doInBackground(String... params) { 

     while(!isCancelled()){ 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       break; 
      } 

      //DateUtils.getRelativeDateTimeString(MainActivity.this, time, minResolution, transitionResolution, flags) 
      // Do something right here 
      publishProgress(Long.toString(System.currentTimeMillis())); 

     } 

     return null; 
    } 

    @Override 
    protected void onProgressUpdate(String... values) { 
     super.onProgressUpdate(values); 

     mTextView.setText(values[0]); 
    } 

} 

를 사용하는 예제입니다 작업을 호출 cancel()

0

그냥 별도의 스레드에서 실행하십시오.

,
Thread thread = new Thread() 
{ 
    @Override 
    public void run() { 
     try { 
      while(true) { 
       sleep(1000); 
       //Do your date update here 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

thread.start(); 

참조 : 스레드와 How to run a Runnable thread in Android?

앱이 일시 정지하거나 적절하게 일시 중지하거나 스레드를 다시 재개 될 때 있는지 확인하십시오. 또한 그것은 좋은 데이터 처리를 위해서 활동 수명주기의 끝에서 그들에게 자신을 끝낼 생각이 여기에

관련 문제