2011-04-19 40 views
1

我正在編寫一個應用程序,需要每隔10秒鐘從套接字接收數據,然後在屏幕上繪製一個視圖來繪製該數據。不幸的是,我對Android非常陌生,在理解如何完成這項工作時遇到了一些麻煩。我一直在閱讀處理程序,但我不太清楚如何使用它們。你可以使用這些擴展視圖的類,或者我根本不需要使用它們嗎?從套接字連接更新視圖

回答

0

使用處理程序似乎是正確的方法,因爲您是從非UI線程更新您的UI(至少您應該是!)...您可以使用像這樣的處理程序,或從數據處理您的活動並從您的活動中的處理程序調用CustomView.draw()。

public class CustomView extends View { 

    public CustomView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomView(Context context) { 
     super(context); 
     ... 
     startThread(); 
     ... 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     ... 
     //Do drawing...canvas.drawBitmap(bitmap) or w/e 
     ... 
    } 

    private void startThread() { 
     Thread thread = new Thread() { 
      public void run() { 
       try { 
        doSocketRequest(); 
       } catch (SocketException e) { // Or w/e exceptions are applicable 
        e.printStackTrace(); 
       } finally { 
        Message msg = new Message(); 
        //msg.obj = ObjectContainingInformationTheHandlerMightNeed 
        mHandler.sendMessage(msg);//replace 0 w/ a message if need be 

       } 
      } 
     }; 
    } 

    private void doSocketRequest() { 
     ... 
     //Do your socket stuff here 
     ... 
    } 

    private Handler mHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      ... 
      //Do graph processing stuff 
      ... 
      invalidate(); //forces onDraw 
     } 
    }; 

} 
+0

這非常有幫助。現在我有一個正在進行套接字通信的活動,然後需要調用另一個繪製視圖的類。我想我做得比我需要的複雜得多。謝謝! – 2011-04-19 20:36:46