如果我执行以下操作,是否会启动该服务?
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
new ComponentName(context, MyService.class),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
如果没有,它会做什么?
http://developer.android.com/reference/android/content/pm/PackageManager.html
我读了javadoc,它只是说'设置启用的设置'。
答案 0 :(得分:5)
如果我执行以下操作,是否会启动该服务?
没有。致电startService()
即可启动该服务。
如果没有,它会做什么?
可以启用或禁用组件,如服务。禁用的组件无法启动。
例如,假设您想要响应某些系统广播,但仅限某些时间。您可以在清单中禁用<receiver>
元素,然后在需要时使用上面显示的代码启用它。这样,您只需要让接收器在需要时响应广播,而不是所有时间。
答案 1 :(得分:0)
如果您正在寻找一种自动启动服务的方法,您可能希望这样做:
将此添加到清单:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
....
<receiver android:name=".service.YourReceiver" android:process=":remote"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
而不是从接收器开始服务......