android开启线程的误区

tihi 2012-04-03

发现一些刚学android的人,和我当初一样,对android的线程会存在着一定误区。

在android中,开启新线程时,一些人会用以下方法:

new Handler().post(r);

但是这样并不是开启新线程,而只是把当前的任务加入到主线程当中。如果要开启新线程,则应该使用HandlerThread,使用如下:

HandlerThread thread = new HandlerThread(name);
		thread.start();
		new Handler(thread.getLooper()).post(r);

如果对此使用较多,则可以封装一个静态方法,用于获取一个以新线程执行任务的对象:

/**
	 * 获取在新线程运行的Handler对象。
	 * 
	 * @param name
	 *            线程名字。
	 * @return 在新线程运行的Handler对象。
	 */
	public static Handler getNewHandlerInOtherThread(String name) {
		HandlerThread thread = new HandlerThread(name);
		thread.start();
		return new Handler(thread.getLooper());
	}

相关推荐