Android从入门到放弃3-线程

Android更新UI元素的由主线程来处理,工作线程只能做逻辑运算处理,处理好之后通过Handler发Message给主线程。
主线程启动后会建立一个 loop 对象,一直在跑循环,定时检查 MessageQueue,取出Message 进行界面更新。

Google这样设计的目的在于让主线程不需要处理线程安全问题,不需要加解锁,大大提高了APP的性能。 这和windows PC开发的机制是一样。

如果UI线程执行某个逻辑运算时间过长的话,超过5秒,系统就会弹出警告,是否继续等待APP的响应还是关闭。这就是著名的 ANR。
因此,所有的耗时操作都应该放在 子线程中运行,比如:访问网络、数据库操作、JSON解析等。

Android常用的线程实现方式有 Thread 和 AsyncTask。

private class MyAsyncTask extends AsyncTask<String, Integer, String> {
    //doInBackground方法内部执行后台任务,不可在此方法内修改UI
    @Override
    protected String doInBackground(String... params) {
        return GetWebData(params[0]);
    }
    //onPostExecute方法用于在执行完后台任务后更新UI,显示结果
    @Override
    protected void onPostExecute(String result) {
        mTvContent.setText(result);
    }
}

GitHub地址:
https://github.com/wuzhuojun/firstcode/tree/master/fcode3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值