本身游戏有个主线程逻辑 我使用了handler 以及 AsyncTask 但是因为这两个其实是多线程的异步操作,android有没有单线程下的异步操作?比如联网的时候等候时间较长 导致无法响应UI线程的按键操作等- -!
[quote]如果在这一个Thread 既保证联网不受阻塞同时也能响应触摸按键 的话 是不是就必需用另一个线程处理handel或是AsyncTask? [/quote]
Android的框架结构是不允许非UI Thread去更新相关Thread的,只能使用Handler或AsyncTask.
可以的。
final Runnable myLongTimeJob = new Runnable() {
public void run() {
someMethodHere();
}
};
new Thread() {
public void run() {
_messageHandler.post(myLongTimeJob);
}
}.start();
AsyncTask也是可以的,
执行UI更新要在onPostExecute中作。
上述的执行都在UI Thread(控制好取数据的先后逻辑,基本不会出现UI不能响应), 如果想要更好的效率就单独作Service吧。
可以参考: [url]http://zhangkun716717-126-com.iteye.com/blog/779025[/url]
楼上正解,因为android本身就是单线程模型,启动的UI线程即是我们的主线程,而ui的更新等等就只能在主线程中操作,此时的Handler配合Thread就可以很好的达到阻塞效果。
如果是网络请求等耗时操作,建议最好使用AsyncTask进行处理,因为它有更好的控制性,例如可以进行该Task的手动取消,相对而言,线程就不是那么好控制了。
另外,关于内存消耗,AsyncTask要比普通线程消耗更多。
希望对楼主有所帮助。
Android的框架结构是不允许非UI Thread去更新相关View的,只能使用Handler或AsyncTask.