Handler理解
Android UI操作并不是線程安全的并且這些操作必須在UI線程中執行。常用的方法是利用Handler來實現UI線程的更新的。
?
package com.handler;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.view.View;
public class TestView extends View {
??? float x = 40;
??? public TestView(Context context) {
???????? super(context);
??? }
??? @Override
??? protected void onDraw(Canvas canvas) {
??????? x+=5;
??????? Paint mPaint = new Paint();
??????? mPaint.setAntiAlias(true);
??????? mPaint.setColor(Color.GREEN);
??????? canvas.drawCircle(x, 100, 100, mPaint);
??? }
}
?
public class TestHandler extends Activity {?
???? protected static final int GUIUPDATEIDENTIFIER = 0x101;??
???? TestView myView = null;??
???? Handler myHandler = new Handler() {?
????????? public void handleMessage(Message msg) {??
?????????????? switch (msg.what) {??
??????????????????? case TestHandler.GUIUPDATEIDENTIFIER:??
???????????????????????? myView.invalidate();?
???????????????????????? break;??
?????????????? }??
?????????????? super.handleMessage(msg);??
????????? }??
???? };?
???? public void onCreate(Bundle savedInstanceState) {??
????????? super.onCreate(savedInstanceState);??
????????? this.requestWindowFeature(Window.FEATURE_NO_TITLE);??
????????? this.myBounceView = new BounceView(this);?
????????? this.setContentView(this.myBounceView);??
????????? new Thread(new TestThread()).start();?
???? }??
???? class TestThread implements Runnable {??
????????? public void run() {?
?????????????? while (!Thread.currentThread().isInterrupted()) {???
??????????????????? Message message = new Message();??
??????????????????? message.what = TestHandler.GUIUPDATEIDENTIFIER;??
??????????????????? TestHandler.this.myHandler.sendMessage(message);??
??????????????????? try {??
???????????????????????? Thread.sleep(100);???
??????????????????? } catch (InterruptedException e) {??
???????????????????????? Thread.currentThread().interrupt();??
??????????????????? }??
?????????????? }??
????????? }??
???? }??
}
轉載于:https://www.cnblogs.com/wzh206/archive/2010/05/15/1736329.html
總結
- 上一篇: [C#]生成缩略图
- 下一篇: 注册了一个域名WELAI.NET