在Android应用的广阔天地里,Service就像是一位不知疲倦的隐形战士,默默承担着那些不露面却至关重要的任务。
Service是什么?又不是什么?
Service本质上是一个应用程序组件,没有图形化的界面,通常用来处理耗时比较长的操作。它可以更新ContentProvider、发送Intent以及启动系统通知等。
但与一些常见的误解相反:
- Service不是一个单独的进程
- Service不是一个线程
这意味着,默认情况下Service仍然运行在你的应用主线程中。如果你需要在Service中执行耗时操作,必须创建新的线程来完成,否则可能导致主线程阻塞,引发应用程序无响应(ANR)问题。
如何在AndroidManifest.xml中声明Service?
使用Service的第一步,是在AndroidManifest.xml文件中进行声明。没有正确的声明,系统将无法识别和运行你的Service。
基本声明方法
最基本的Service声明只需要指定name属性:
<service android:name=".MyService" />
但这只是冰山一角,让我们来看看一个完整的Service声明可以包含哪些属性:
<service
android:name=".MyService"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:isolatedProcess=["true" | "false"]
android:label="string resource"
android:permission="string"
android:process="string" >
</service>
关键属性详解
| 属性名称 |
说明 |
默认值 |
| android:enabled |
系统是否能实例化该Service |
"true" |
| android:exported |
其他应用组件是否能调用该Service或与之交互 |
含intent-filter时"true",否则"false" |
| android:name |
Service类的完整名称 |
必需指定 |
| android:permission |
启动或绑定到Service所需的权限名称 |
无 |
| android:process |

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



