记录开发时的小问题——线程的使用
来源:互联网 发布:在淘宝上如何贷款 编辑:程序博客网 时间:2024/06/08 07:30
这次的一个小DEMO是集合了AR和地图两大功能。采用tabhost把两个功能集中在页面底部,进而实现对功能的一个展示,可是问题是当初采用button控件时,可以很好地实现两大功能,地图也能完成定位的功能。但是换成tabhost后,地图还是会出现,却实现不了定位功能。经过对输出日志的查看,发现原来是因为我把所有的功能都写到了主线程里。导致主线程承受不了太多的功能,因此会出现“罢工”现象。问题找到了就要解决问题了,接下来就是对线程的使用。
android有两种方式处理线程:
- 比较耗时的操作放在后台服务,通过通知机制通知用户使用的活动(activity);
- 在后台线程中处理耗时的操作
使用Handler
创建后台线程最友好的办法是创建一个Handler子类的实例。只需一个Handler对应一个Activity。自定义的后台线程可与Handler通信,Handler将与UI线程一起工作。
和Handler通信,需要两个选项,message和runnable对象。
Message
发送Message到Handler,第一步调用obtainMessage(),从池中得到Message对象。
然后,可通过消息队列将Message发送给Handler,通过sendMessage…()方法族:
- sendMessage() 立即发送Message到消息队列
- sendMessageAtFrontOfQueue() 立即发送Message到队列,而且是放在队列的最前面
- sendMessageAtTime() 设置时间,发送Message到队列
- sendMessageDelayed() 在延时若干毫秒后,发送Message到队列
为了处理Message,Handler需要实现handleMessage(),当Message出现在队列中时,会调用handleMessage()方法。另外,Handler可在需要时更新UI。
以下示例演示一个进度条,每隔1秒钟增加1/20个单位。
- 记录开发时的小问题——线程的使用
- 记录: 开发中的2个线程的使用问题
- Android使用中一些小问题记录的记录
- 线程的小问题
- 关于开发安卓sqlite的小问题记录
- 记录开发中遇到的一些小问题和感悟
- 记录一下使用git遇到的一个小问题
- 线程问题的小总结
- 初次使用bantu16.04LTS时几个小问题的解决方法记录
- 使用Java开发定制标记库遇到的小问题——<body-content>
- 在学习php时的一些小问题的记录
- Android开发小问题记录
- 开发记录——关于play传值的问题
- 创建线程遇到的一些问题记录
- Python写小爬虫时遇到的问题记录
- -Android开发中,使用线程应该注意的问题!
- Android开发中,使用线程应该注意的问题!
- Android开发中,使用线程应该注意的问题!
- Point Grey Research官方驱动固件软件(Bumblebee相机系列软件)
- 苹果审核Rejected的原因列表
- vector,list,deque,set,map of STL
- easyui中解决注册框宽度问题
- C++ stl使用之vector的基本使用和遍历
- 记录开发时的小问题——线程的使用
- 编程学习笔记
- 动态规划公式
- A* 算法, 推荐几篇写的很好的博文
- 原生应用才是未来
- JSON带来编程界怎样的描述
- 网站排名不稳定的背后因素
- 查看调用DLL的程序及Kill DLL文件
- 2013年7月工作安排