android - 理解 "setComponentEnabledSettings"的 onEnabled/onDisabled 方法

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

最佳答案

Android SDK 文档对两者进行了解释:onDisabledonEnabled

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

编辑:引用 setComponentEnabledSetting 调用,我相信它们只是用来指示没有任何小部件处于 Activity 状态,因此可以停止任何相关的后端处理。

关于android - 理解 "setComponentEnabledSettings"的 onEnabled/onDisabled 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645149/

相关文章:

java - 使用 Android Studio 3.4 android.support.v7.widget.CardView(修复构建路径、编辑 XML、创建类)

java - 如何在调整大小时设置不同的小部件图标

安卓小部件 :how to determine which button was clicked?

android - 如何纠正 Lottie 文件的文本对齐方式?

android - 使用哪些工具和库来使用 Web 技术构建简单的 iOS 和 Android 应用程序?

android - 在服务器上使用 ClientLogin 的 C2DM

java - Android widget listview 处理点击

Android list 合并失败

Android - 检测 Wifi 是否需要浏览器登录

java - 此应用程序小部件 fragment 中所有 Intent (PendingIntents)的逻辑流