Android.view.ViewRoot$CalledFromWrongThreadException

5649 단어 messagehandlerAndroid
1、안드로이드가 발생합니다.view.ViewRoot$CalledFromWrongThreadException 예외:
주 스레드를 만드는handler의 물건입니다. 하위 스레드가 주 스레드의 메시지 Quene에 메시지를 퍼시해서 주 스레드의handler Message () 함수를 터치하고 주 스레드가 하위 스레드의 상태를 알 수 있도록 하고 주 스레드에서 UI를 업데이트합니다.
Handler 객체 만들기 @Override에서handleMessage
   
   
   
   
  1. public final static int GET_FROM_BACKEND_SUCCESS = 1; 
  2. public final static int GET_FROM_BACKEND_FAILED = -1; 
   
   
   
   
  1. private Handler getDataHandler = new Handler(){ 
  2.         /* (non-Javadoc) 
  3.          * @see android.os.Handler#handleMessage(android.os.Message) 
  4.          */ 
  5.         @Override 
  6.         public void handleMessage(Message msg) { 
  7.             // TODO Auto-generated method stub 
  8.             super.handleMessage(msg); 
  9.             int id = msg.what; 
  10.             switch(id){ 
  11.             case GET_FAVORITE_LIST_FROM_BACKEND_SUCCESS: 
  12.                 
  13.                 break
  14.             case GET_FAVORITE_LIST_FROM_BACKEND_FAILED: 
  15.                 
  16.                 break
  17.             } 
  18.             ....setVisibility(View.GONE); 
  19.         } 
  20.     }; 
  21.     private Runnable runnable = new Runnable(){ 
  22.         @Override 
  23.         public void run() { 
  24.             try { 
  25.                ...........
  26.                 getDataHandler.sendEmptyMessage(GET_FROM_BACKEND_SUCCESS); 
  27.             } catch (Exception e) { 
  28.                 // TODO Auto-generated catch block 
  29.                 e.printStackTrace(); 
  30.                 getDataHandler.sendEmptyMessage(GET_FROM_BACKEND_FAILED); 
  31.             } 
  32.         } 
  33.     }; 
  34.     private Thread getDataThread; 

   
   
   
   
  1. if(!msalApp.haveAvaliableNetWork()){ 
  2.             Toast.makeText(this, R.string.no_internet, Toast.LENGTH_SHORT).show(); 
  3.         }else
  4.             ....setVisibility(View.VISIBLE); 
  5.             getDataThread = new Thread(runnable); 
  6.             getDataThread.setPriority(Thread.NORM_PRIORITY); 
  7.             getDataThread.start(); 
  8.         } 
  9. }

좋은 웹페이지 즐겨찾기