Android中Handler的使用
当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class HandleActivity extends Activity {
private ImageView imageView = null;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
//你的操作
break;
case 1:
//你的造作
break;
}
super.handleMessage(msg);
}
}; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); thread.start();
} Thread thread = new Thread(new Runnable() { public void run() {
Message message = new Message();
message.what = 1;
message.obj = obj;
handler.sendMessage(message);
}
}); }
也可以直接写在一个方法内实现
private void getRealTimeBills(final String date)
{
final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.what == 1)
{
realTimeBills = (RealTimeBills) msg.obj;
}
}
};
new Thread(){
@Override
public void run()
{
Message message = new Message();
try
{
realTimeBills = context.getRealTimeBills(date);
if(realTimeBills.getResultMessage().OK())
{
message.what = 1;
message.obj = realTimeBills;
}
catch (Exception e)
{
e.printStackTrace();
}
handler.sendMessage(message);
}
}.start();
}
最新文章
- spring源码分析之cache注解
- cursor中的url整理
- 。Java注意事项
- Blend Tree Type
- Behavior-Based Intelligence
- ionic中的生命周期函数
- LINQ to Entities 查询注意事项
- mapreduce框架详解
- 面向对象 ";一";
- mybatis 详解(四)------properties以及别名定义
- spring+mybaits多数据源使用
- [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.4 粘性热传导流体动力学方程组
- WEB API 系列(二) Filter的使用以及执行顺序
- 【oracle入门】数据库系统范式
- spring框架篇(一)-------spring简介与配置文件使用控制反转事例
- JS 点击复制
- 深入理解CSS系列(一):理解CSS的盒子模型
- Scala进阶之路-Scala中的枚举用法案例展示
- linux php命令安装
- CentOS中配置Kafka集群