WEB开发网
开发学院手机开发Android 开发 Android之handler使用 阅读

Android之handler使用

 2010-05-28 14:52:00 来源:WEB开发网   
核心提示:SystemClock.sleep(2000);setContentView(R.layout.main);}public void startThread() {mThread.start();}public void sendMessage() {MHandler mHandler = new MHandler()

SystemClock.sleep(2000);

setContentView(R.layout.main);

}

public void startThread() {

mThread.start();

}

public void sendMessage() {

MHandler mHandler = new MHandler();

Message msg = mHandler.obtainMessage();

msg.sendToTarget();

}

class MHandler extends Handler {

public MHandler() {

}

public MHandler(Looper l) {

super(l);

}

@Override

public void handleMessage(Message msg) {

int count = 0;

while (count++ < Integer.MAX_VALUE) {

Log.d(TAG, "Rintail");

}

}

}

Thread mThread = new Thread() {

@Override

public void run() {

int count = 0;

while (count++ < Integer.MAX_VALUE) {

Log.d(TAG, "Rintail");

}

}

}

二. Handler对于Message的处理不是并发的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的。但是如果用不同的Looper则能达到并发的目的。Service 中,onStart的执行也是阻塞的。如果一个startService在onStart执行完成之前,再次条用startService也会阻塞。如果希望能尽快的执行onStart则可以在onStart中使用handler,因为Message的send是非阻塞的。如果要是不同消息的处理也是并发的,则可以用不同的Looper实例化Handler。

Java代码

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

sendMessageWithLooper();

//sendMessage();

}

public void sendMessage() {

MHandler mHandler = new MHandler();

Message msg = mHandler.obtainMessage();

msg.sendToTarget();

}

public void sendMessageWithLooper() {

HandlerThread ht = new HandlerThread("Rintail");

ht.start();

MHandler mHandler = new MHandler(ht.getLooper());

Tags:Android handler 使用

编辑录入:coldstar [复制链接] [打 印]
赞助商链接