Handler 통신을 이용하여 시스템 시간을 실시간으로 표시하다

핵심 기술:
이 프로그램은 Handler, Timer, TimerTask, Message 등 관건적인 기술을 사용하여 화면에 시스템을 실시간으로 표시하는 시간을 실현했다.
사고 분석:
안드로이드에서 프로그램이 주 스레드 (UI 스레드) 에서 호출되거나 시간이 걸리는 작업을 할 수 없다는 것을 우리는 모두 알고 있다.그래서 우리는 반드시 주 라인에 가서 다른 라인을 만들어 시간이 걸리는 조작을 해야 한다.마치 우리가 패스트푸드점을 연 것 같다. 패스트푸드점에서 프론트 데스크를 UI의 메인 라인으로 볼 수 있고 그는 고객과 상호작용을 담당한다.또 다른 일부는 배달원이다. 그는 패스트푸드를 배달하는 것을 책임진다. 즉, 그는 일부 시간 소모 조작을 책임진다.
이렇게 되면 고객이 프런트에 배달된 패스트푸드를 달라고 할 때 프런트에서 이 비용의 조작을 배달원에게 맡길 수 있다. 이후에 프런트는 당분간 배달이 어떻게 이 패스트푸드를 배달하는지 상관하지 않아도 된다.이것은 사용자와 UI 스레드가 상호작용할 때 사용자가 시간이 걸리는 작업을 수행하는 것과 같다. 이때 UI 스레드는 이 시간이 걸리는 작업을 다른 스레드에 맡긴다. 이후에 UI 스레드는 이 스레드가 어떻게 임무를 수행하는지 상관하지 않아도 된다.
그러면 구체적인 실현 절차는 어떻습니까?본 프로그램의 도움을 빌려 일부 메인 라인과 시간 소모 라인, 그리고Handler가 정보를 전달하는 메커니즘을 이해할 수 있다.
Handler로 정보를 전달하려면 메시지 클래스의 실례가 있어야 한다.인스턴스에는 다음과 같은 3개의 인스턴스 변수가 있습니다.
what: 사용자가 정의한 int형 메시지 코드로 메시지를 설명합니다. (컨트롤의 id와 유사할 수 있습니다.)
obj: 메시지를 보내는 사용자가 지정한 대상(그것의 이름을 보면 Object의 유형임을 알 수 있다. 즉, 당신이 어떤 메시지를 전달하고 싶으면 어떤 메시지를 전달할 수 있다는 것이다).
target: 메시지를 처리하는 Handler입니다.
코드 데모:
또한 실시간으로 시간을 표시하려면 타이머 Timer 객체가 있어야 합니다.
Timer timer = new Timer(); //        ,        
        
        /**
         * ........
         */
        
        timer.schedule(timerTask, 0, 1000);

여기서 우리는 1초를 시간 주기로 한다.
타이머 대상에서 TimerTask 대상이 실행되었습니다. 메시지 내용을 보내는 데 사용할 라인을 얻었습니다.
TimerTask timerTask = new TimerTask() {
            
            @Override
            public void run() {
                Message message = new Message();
                message.what = MESSAGE_WHAT_UPDATE_VIEW;
                message.obj = view;
                handler.sendMessage(message);
            }
        };

이상은 라인에서 메시지를 보내는데 우리는handler로 정보를 받고 받은 메시지 내용에 따라 시간 조작을 수행할 수 있다.다음과 같습니다.
Handler handler = new Handler() {
        public void handleMessage(android.os.Message message) {
            View view = (View) message.obj;
            updateView(view);
        }
    };

패스트푸드점처럼 프런트에서 고객이 무엇을 먹고 싶은지 받아야만 배달원에게 무엇을 배달해야 하는지 알려주는 것이 일리가 있다.이 업데이트View(view)는 얻은view로 Fragment이나Activity의 내용을 재생성합니다.
오른쪽을 클릭하여 데모 소스 획득:Handler를 이용한 실시간 업데이트 시간

좋은 웹페이지 즐겨찾기