gpt4 book ai didi

android - 从小部件获取 SCREEN_ON 和 SCREEN_OFF Intent

转载 作者:行者123 更新时间:2023-11-29 22:17:11 26 4
gpt4 key购买 nike

我有一个小部件,我想检查屏幕是关闭还是打开。

我不能使用 PowerMananger.isScreenOn 因为我想支持 Android 1.5/1.6。

所以我尝试在 list 中注册 SCREEN_ON/SCREEN_OFF 操作,但这不起作用。似乎只有 registerReceiver 适用于这些 Intent 。 ( Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF? )

问题是,我应该在哪里注册我的小部件?

我无法从我的小部件注册屏幕 Intent 接收器,因为您无法从 list 中说明的另一个 BroadcastReceiver 调用 registerReceiver。

我考虑过在配置 Activity 的 onCreate 中调用它。

问题是我没有调用 unregisterReceiver,所以我得到了泄漏异常。

还有其他解决办法吗?

谢谢。

最佳答案

我的解决方案是在 AppwidgetProvider 子类的 public void onReceive(Context context, Intent intent) 方法中启动一个服务。喜欢:

        if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_ENABLED)) {
Intent listenerService=new Intent(context,ScreenMoniterService.class);
startService(listenerService);
return;
}

然后在该服务的public void onCreate()方法中注册BroadcastReceiver,在public void onDestroy()方法中取消注册。当然,您应该在删除所有应用程序小部件后停止该服务。

        if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_DISABLED)) {

Intent listenerService=new Intent(context,ScreenMoniterService.class);
stopService(listenerService);
return;
}

关于android - 从小部件获取 SCREEN_ON 和 SCREEN_OFF Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com