第8章 后台工作
由于大多数移动设备的屏幕大小限制,在特定的时间上一般只有一个应用程序可见和活跃。这就为那么些运行在后台而不需要UI的程序提供了极好的环境——响应事件、数据轮查或者更新Content Provider。
Android提供了Service类来创建特殊的程序组件,它能悄无声息的处理操作和提供功能,而不需要任何UI。与不活跃的Activity相比,Android授予Service更高的优先度,因此,当系统需要资源时,它被杀死的可能性就更低。事实上,当运行时仓促地终止了一个已经启动的Service时,一旦资源富余时,它就能很快重启。通过使用Service,你可以保证你的应用程序能继续运行和响应事件,甚至在他们不在活跃的时候。
Service的运行不需要专门的GUI,但是,和Activity和Broadcast Receiver,它们仍需要在程序进程的主线程中执行。为了让你的程序拥有持续的响应性,你将学习将耗时的处理(例如网络搜索)移到后台线程中。
在没有Activity提供UI的情况下,Android为应用程序组件(尤其是Service)提供了一些技巧来与用户交流。在这一章,你将学习如何使用Notification和Toast来礼貌地警告和通知用户,而不需要中断当前活跃的应用程序。
Toast是一种短暂的,非模态框的机制用于向用户显示信息,而不需要从活跃的程序上截取焦点。你将学习在任一程序组件中利用Toast发送不起眼的屏幕信息给用户。
Toast是悄无声息的、短暂的,而Notification代表了一种更加健壮的机制来警告用户。对于大多数用户来说,当他们不使用电话时,他们会设置成无声状态并放在口袋或书桌上,直到手机响起、震动和闪光。用户应该错失这些警告吗?状态条图标就是用来向用户显示已经发生了的事件。在Android中这些引人注意的东西就是Notification。
Alarm提供了一种机制:在程序生命周期以外,在特定的时间点上发送Intent。你将学习使用Alarm启动Service、打开Activity或者基于时刻点或设备启动的时间流逝来广播Intent。Alarm在它的程序已经关闭的情况下都能触发,并能将设备从睡眠状态唤醒(如果需要的话)。