2012-07-13 2 views
1

단추 클릭 수신기에서 시작되는 비동기 작업이 있습니다. 그것은 하루 종일 반복적으로 일어날 인쇄 작업입니다. 스레드 나 개체가 누출되지 않는 인쇄 작업을 확인하고 싶습니다. 내 looper.mylooper.quit() 라인은 내가 필요로하는 모든 것입니까?루퍼/실행 파일을 죽이는 방법

리스너 코드는 다음과 같습니다

private final Button.OnClickListener cmdPrintOnClickListener = new Button.OnClickListener() { 

    public void onClick(View v) { 
     enableScreenForUse(false); 
     setStatus("Saving any changes"); 
     saveButtonClicked(); 
     TwoInchZebraDocket newDocket = new TwoInchZebraDocket(mRunDetailID, getContentResolver()); //could set this to final if we get problems -> see for details http://stackoverflow.com/questions/11424924/how-can-i-pass-an-object-to-a-new-thread-generated-anonymously-in-a-button-liste/11425012?iemail=1#11425012 
     setStatus("Creating docket for printing"); 
     PrintRunnable target = new PrintRunnable(newDocket, CheckoutActivity.this); 
     new Thread(target).start(); 

     } 
}; 

실행 가능한 오브젝트 코드는 다음과 같습니다

public void run() { 
    Looper.prepare(); 
    printDocket(); 
    Looper.loop(); 
    Looper.myLooper().quit(); 

} 

답변

0

내가 생각하는 당신은 AsyncTask를하다 싶어합니다. "printDocket()"이 UI 스레드를 업데이트하는 경우, 불충분 한 루퍼를 참조해야합니다. 여기

는 개발자 문서입니다 : http://developer.android.com/reference/android/os/AsyncTask.html

기본적으로, doInBackground()에서 비동기 스레드 작업을 수행하고, onPostExecute 내에서 UI 업데이트().

+0

나는 둘 다 시도했다. 그러나 어느쪽으로 든 looper.prepare()가 있어야한다. 그렇지 않으면 모바일 프린터에 대한 블루투스 연결이 실패한다. 어느 쪽이든 나는 아직도 누수가 있는지 여부를 알아야합니다. – WaterBoy

관련 문제