2016-06-13 3 views
2

나는 여러 작업 큐를 만들고 동시에 다른 시간 지연으로 실행하려고했습니다. 기본적으로, 처음에는 하나의 실행 객체 만 있습니다.안드로이드 동시에 여러 Runnable 개체를 처리하는 방법

private final Runnable myQueue = new Runnable() { 
public void run() { 

    if (service != null && service.isRunning() && service.queueEmpty()) { 
     queueTasks(); 
    } 
    // run again in period defined in preferences 
    new Handler().postDelayed(myQueue,getUpdatePeriod(prefs)); 
} 

};

private void StartWExecute() {new Handler().post(myQueue);} 

은 두 개 이상의 큐가 될 수 있도록 내 코드를 향상시키고 자하는 모든 큐 동시에 실행을 시작하지만, 각 큐는의 작업에 따라 다른 updatePeriod을 가질 수있다. 이 방법으로 작업을 대기열로 정렬하고 수동으로 업데이트 속도를 제어 할 수 있습니다. 이것을 어떻게 성취합니까?

감사합니다.

+1

클래스 만들기 t는'Handler'를 확장하고'handleMessage'를 오버라이드합니다. 이제 각각 다른 지연/타이밍을 갖는'Handler' 클래스의 여러 인스턴스를 생성 할 수 있습니다. – pskink

+0

@pskink 안녕하십니까. 나는 안드로이드에 처음 익숙하다. 당신은 더 구체적 일 수 있습니까? 예를 써 주시겠습니까? 고맙습니다. – Deidara

+0

[this] (http://pastebin.com/pzdH6M4p)와 유사합니다. – pskink

답변

2

당신은 MessageQueue가를 사용할 필요

1.Declare Handler를 : Handler mWorkerHandler;
2.Create 루퍼 :

Thread t = new Thread() { 
      @Override 
      public void run() { 
       Looper.prepare(); 
       mWorkerHandler = new Handler() { 
        @Override 
        public void handleMessage(Message msg) { 
         Log.d(TAG, "handleMessage - what = " + msg.what); 
        } 
       }; 
       Looper.loop(); 
      } 
     }; 
     t.start(); 

3.Now 어떤 숫자 메시지를 보내고 수행 할 수 있습니다 메시지 내용에 따른 작업 :

mWorkerHandler.sendEmptyMessageDelayed(1, 2000); 
mWorkerHandler.sendEmptyMessage(2); 
관련 문제