Android线程

Android系统会为应用创建一个main进程,程序的所有组件都运行在这个进程里

Andoid的单线程模式必须遵守两个规则:

1.不要阻塞UI线程。

2.不要在UI线程之外访问Andoid的UI组件包。


为了能够在其他线程中方为UI线程,Android提供了几种方法:

Activity.runOnUiThread(Runnable)

View.post(Runnable)

(long)View.postDelayed(Runnable , long)

然而这几种方法都有其局限性,对于更复杂的逻辑可能就无能为力了。

所以需要引入Handler机制来处理UI线程分发过来的消息。

Android还提供了一个异步任务类AsyncTask,这个类在内部封装了Handler。事实上整个Android上Handler是无处不在的。


AsyncTask的工作方式概述:

  • 可以用generics来指定参数、进度值和任务最终值的类型。
  • 工作线程中的doInBackground()方法会自动执行。
  • onPreExecute()onPostExecute()onProgressUpdate()方法都在UI线程中调用。
  • doInBackground()的返回值会传给onPostExecute()。
  • 在doInBackground()内的任何时刻,都可以调用publishProgress()来执行UI线程中的onProgressUpdate()。
  • 可以在任何时刻、任何线程内取消任务。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值