`
貌似掉线
  • 浏览: 257007 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android开启线程的误区

阅读更多
发现一些刚学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());
	}
0
0
分享到:
评论
4 楼 貌似掉线 2013-04-07  
xiaozhi6156 写道
貌似掉线 写道
xiaozhi6156 写道
这么一回事?

据我所知,直接new Handler是用的是主线程的Looper。

不懂,今天去笔试有人问启动actitiy有哪几种模式..不懂

貌似有4种,在manifest文件那里有看到定义了4个,有单例单任务什么的,忘了。我只知道有一种就是最多只创建一个这样的activity。比如有AActivity和BActivity,然后A可以跳转到B去,B可以startActivity(B.this, AActivity.class),那么这时如果A没有退出的话,它是不会再创建新的,而是跳到AActivity(也就是在栈中,只有一个AActivity)。
3 楼 xiaozhi6156 2013-03-27  
貌似掉线 写道
xiaozhi6156 写道
这么一回事?

据我所知,直接new Handler是用的是主线程的Looper。

不懂,今天去笔试有人问启动actitiy有哪几种模式..不懂
2 楼 貌似掉线 2013-03-27  
xiaozhi6156 写道
这么一回事?

据我所知,直接new Handler是用的是主线程的Looper。
1 楼 xiaozhi6156 2013-03-26  
这么一回事?

相关推荐

Global site tag (gtag.js) - Google Analytics