Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 包管理器中的setComponentEnabledSetting是否启动服务?_Android - Fatal编程技术网

Android 包管理器中的setComponentEnabledSetting是否启动服务?

Android 包管理器中的setComponentEnabledSetting是否启动服务?,android,Android,如果我执行以下操作,它是否启动服务 PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting( new ComponentName(context, MyService.class), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 如果没

如果我执行以下操作,它是否启动服务

PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
        new ComponentName(context, MyService.class),
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);
如果没有,它有什么作用

我读了javadoc,它只是说“设置启用的设置”

如果我执行以下操作,它是否启动服务

PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
        new ComponentName(context, MyService.class),
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);
否。调用startService将启动该服务

如果没有,它有什么作用

组件(如服务)可以启用或禁用。无法启动禁用的组件

例如,假设您希望响应某些系统广播,但仅在某些时间响应。您可以在清单中禁用元素,然后在需要时使用上面显示的代码启用它。这样,您只需要让接收器在需要时对广播做出响应,而不是在所有时间

如果我执行以下操作,它是否启动服务

PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
        new ComponentName(context, MyService.class),
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);
否。调用startService将启动该服务

如果没有,它有什么作用

组件(如服务)可以启用或禁用。无法启动禁用的组件


例如,假设您希望响应某些系统广播,但仅在某些时间响应。您可以在清单中禁用元素,然后在需要时使用上面显示的代码启用它。这样,您只需要让接收器在需要时响应广播,而不是在所有时间都响应广播。

如果您正在寻找自动启动服务的方法,您可能需要执行以下操作:

将此添加到清单:

<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>

然后从接收器启动服务…

如果您正在寻找自动启动服务的方法,您可能需要执行以下操作:

将此添加到清单:

<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>
然后从接收器启动服务