Android 后台任务(一)概述

Android 后台任务(一)概述

 

翻译自:http://blog.stylingandroid.com/archives/833

转载请注明:http://blog.csdn.net/liaoqianchuan00/article/details/23949407

 

我们专注于提高界面美化和用户体验。其中很重要的一点就是当用户点击/触摸界面上某个元素的时候没有反应,这会让用户感到灰心。

 

Android是多线程的。当Android 应用启动的时候,系统为应用程序创建了一个主线程。当你用debug模式运行你的程序的时候,你可以看见:

 

主线程很重要,因为靠他来处理UI事件。当用户触摸屏幕,任何触摸或者点击事件都会发生在UI线程中。这就是为什么通常我们管他叫UI线程的原因。而对于我个人而言,我更倾向于叫它UI线程,因为从字面就知道他用来处理UI事件。

 

我们用这个线程来处理UI事件,如果这个事件处理话费很长的事件,那么后面接下来的一些列UI事件都不会被处理,直到这个处理事件完成之后。对于用户来说就好像这个程序没有反应了。当一个UI线程处理事件超过5秒(或者在BroadcastReceiver10秒),Android将会抛出“AndroidNot Responding”(ANR)对话框,用户可以选择退出你的程序。对于用户来说这真是太糟糕了,很多时候可能都会卸载掉你的程序。

 

所以关键就在于尽量的让你的UI 线程as free as possible。不管什么时候,我们在UI线程中处理事件的时候都应该尽快的完成。若果这个时候我们确实有一些耗时操作,我们可以考虑在其他的线程中处理这些事情,这样我们就可以尽量做到让UI线程as free as possible。

 

我们必须知道一件事,Activity生命周期里面的所有方法都是在UI线程中执行的。所以我们不要再里面处理耗时操作,比如像在onCreate中处理网络请求等。

 

有个问题就是,我们怎么知道UI线程中有耗时操作。幸运的是,Android API 9为我们提供了StrictMode,他会提示我们潜在的问题。这个用法很简单,大家可以参考我的其他文章来了解他的使用。我建议在测试的时候开启StrictMode来检测潜在的问题。但是请记住在你发布你的程序之前移除StrictMode。

 

希望你明白为什么我们要尽量的让UI线程as free as possible。接下来我们将会介绍怎么来做。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值