1
我正在編寫一個應用程序,需要每隔10秒鐘從套接字接收數據,然後在屏幕上繪製一個視圖來繪製該數據。不幸的是,我對Android非常陌生,在理解如何完成這項工作時遇到了一些麻煩。我一直在閱讀處理程序,但我不太清楚如何使用它們。你可以使用這些擴展視圖的類,或者我根本不需要使用它們嗎?從套接字連接更新視圖
我正在編寫一個應用程序,需要每隔10秒鐘從套接字接收數據,然後在屏幕上繪製一個視圖來繪製該數據。不幸的是,我對Android非常陌生,在理解如何完成這項工作時遇到了一些麻煩。我一直在閱讀處理程序,但我不太清楚如何使用它們。你可以使用這些擴展視圖的類,或者我根本不需要使用它們嗎?從套接字連接更新視圖
使用處理程序似乎是正確的方法,因爲您是從非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
}
};
}
這非常有幫助。現在我有一個正在進行套接字通信的活動,然後需要調用另一個繪製視圖的類。我想我做得比我需要的複雜得多。謝謝! – 2011-04-19 20:36:46