具有“setComponentEnabledSettings”理解的onEnabled / onDisabled方法

时间:2011-01-10 09:10:18

标签: android android-widget

我正在研究原始PowerControl Widget(SettingsAppWidgetProvider)中的一段源代码,我找到了以下方法:

    @Override
    public void onEnabled(Context context) {
        PackageManager pm = context.getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName("com.android.settings",
                                        ".widget.SettingsAppWidgetProvider"),
                                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                                        PackageManager.DONT_KILL_APP);
    }

    @Override
    public void onDisabled(Context context) {
        Class clazz = com.android.settings.widget.SettingsAppWidgetProvider.class;
        PackageManager pm = context.getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName("com.android.settings",
                                        ".widget.SettingsAppWidgetProvider"),
                                        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                                        PackageManager.DONT_KILL_APP);
    }

有人可以解释一下他们到底做了什么吗?

编辑:对不起,我的问题很糟糕......我知道他们什么时候被打电话但是我无法理解setComponentEnabledSetting对做什么:D

1 个答案:

答案 0 :(得分:3)

Android SDK文档解释了:onDisabledonEnabled

简而言之,在创建窗口小部件的第一个实例时调用onEnabled,并在删除/删除窗口小部件的最后一个实例时调用onDisabled

编辑:在参考setComponentEnabledSetting调用时,我认为它们只是用于表示没有窗口小部件处于活动状态,因此可以暂停任何相关的后端处理。