34人参与 • 2025-02-15 • Android
service 是 android 的“后台打工人”,分两种类型(前台和后台),两种启动方式(自己干、和人合作干),不同场景用不同姿势。
特点:必须显示一个常驻通知(像外卖小哥穿着工服),告诉用户“我正在后台干活”,避免被系统干掉。
适用场景:
代码示例:
val notification = buildnotification() // 创建通知 startforeground(1, notification) // 变成前台服务
特点:没有通知,默默干活,但 android 8.0 之后限制严格(长时间后台运行会被系统限制)。
适用场景:
注意:高版本 android 中,后台服务可能无法长期存活,建议改用 workmanager
或 jobscheduler
。
特点:
startservice()
启动,service 会一直运行,直到主动调用 stopself()
或其他组件调用 stopservice()
。oncreate()
→ onstartcommand()
→ (运行中) → ondestroy()
。适用场景:
代码示例:
// 启动服务 val intent = intent(this, myservice::class.java) startservice(intent) // 停止服务 stopservice(intent)
特点:
bindservice()
启动,service 和组件(如 activity)绑定,绑定解除后 service 可能被销毁。oncreate()
→ onbind()
→ (运行中) → onunbind()
→ ondestroy()
。ibinder
接口实现组件和 service 的双向通信(比如控制音乐播放进度)。适用场景:
代码示例:
// 绑定服务 val connection = object : serviceconnection { override fun onserviceconnected(name: componentname?, binder: ibinder?) { // 获取 service 的接口,进行交互 } override fun onservicedisconnected(name: componentname?) {} } bindservice(intent, connection, context.bind_auto_create) // 解绑服务 unbindservice(connection)
特点:
startservice()
让 service 长期运行,再 bindservice()
进行交互。销毁条件:必须同时调用 stopservice()
和 unbindservice()
才会销毁。
特点:
workmanager
或 jobintentservice
。代码示例:
class myintentservice : intentservice("myintentservice") { override fun onhandleintent(intent: intent?) { // 在子线程执行耗时任务 } }
场景 | 启动方式 | 类型 |
---|---|---|
长期任务(如音乐播放) | startservice() | 前台服务 |
临时交互(如下载控制) | bindservice() | 绑定服务 |
轻量后台任务(如数据同步) | workmanager | 后台服务替代 |
前台服务:要亮通知,适合用户感知的任务。
后台服务:尽量少用,高版本 android 限制多。
启动方式:
startservice()
,记得关。bindservice()
,绑定完记得解。口诀:
以上就是android里面的service种类以及启动方式的详细内容,更多关于android service种类及启动的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论