Android后台作业的最佳实践(一)

     在Android编程中如何在后台运行操作,以提高应用程序的性能,并尽量减少对电池消耗。

在许多情况下,应用程序需要在用户不与之交互时执行某些操作。例如,一个相册应用程序可能需要通过压缩其照片来优化其存

储;应用程序不希望在用户与它交互时这样做,因为这可能会降低其性能。然而,如果一个应用程序在前台不运行时工作,那么它可

能会干扰其他应用程序的性能。因此,应用程序选择正确的方式来完成后台工作是很重

要的。Android平台提供了很多应用程序在后台运行的方法:

Scheduled Jobs

Scheduled Jobs 通常是你最好的选择。当你想运行某个操作时,你可以定义一个job,在你指定的环境下运行。例如,如果你想更新你的应用程序的缓存数据,你可以指定这个操作在设备连接到电源时或者在非网络连接情况下运行,这样可以节省用户电量或者用户的网络流量,系统会在合适的时间启动这些操作,即使你的应用程序当前没有运行。系统还能智能地批量完成操作;例如,当系统空闲时,它会做更多的工作。

Services

在某些情况下,service是一个不错的选择。例如,如果您有一个音乐应用程序,您需要定义一个服务来处理音频回放。在这样的情况下,你可以使用一个前台服务。前台服务做的工作是用户所注意的,他们必须显示一个状态栏图标。
应用程序也可以使用让用户不注意的后台服务。然而,如果用户正在处理另一个应用程序,这会损害系统性能。出于这个原因 Android系统限制应用程序API级别26或更高的应用程序使用后台服务,除非应用程序本身在前台。 当用户完成相应的操作并将程序挂起后,应用程序的后台服务只能维持一个简短的时间。也就是说,在程序挂起时,或者程序导航离开时,你要完成你的操作,否则操作就不执行了。在大多数情况下,如果您希望应用程序在用户不交互的情况下做一些事情,那么您最好使用 Scheduled Jobs

Broadcasts

应用程序可以注册接收系统广播,并在接收到这些广播时执行操作。然而,有一个危险,如果几个应用程序都试图响应相同的广播,系统性能可能受到损害。由于这个原因,系统限制了针对API级别26或更高的应用程序的注册,以接收其清单中最一般的(隐式)广播,因为以这种方式注册会导致应用程序在广播发送时启动。同样,在这种情况下,最好的选择是使用 Scheduled Jobs。应用程序仍然可以使用它们的显式来注册显式广播,因为它们直接针对应用程序。应用程序也可以登记为隐式广播在运行时调用registerreceiver(),既然这样,他们只会在程序已经运行时 接收广播或者广播发送。

Alarms



你的应用程序可以使用AlarmManager,当你需要启动你的应用程序在一个特定的时间。在指定的时间,设备唤醒,并发送一个intent到您的应用程序唤醒它。然而,当你需要你的应用程序在某个特定时间做某事时,你应该只使用这种方法。如果只需要在指定的时间间隔执行操作,或者在特定条件下执行操作,则应该使用 Scheduled Jobs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值