0

几秒钟前,我正在调试我的小部件,我发现onReceive即使我的小部件不在主屏幕上(它侦听WIFI_STATE_CHANGED_ACTION),也会调用该方法。即使我的小部件的进程没有运行,它也会启动并调用该方法。清单中的代码如下:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">

    <receiver android:name="WiFiWidget">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>

        <meta-data android:name="android.appwidget.provider" 
                   android:resource="@xml/widget_info" />
    </receiver>

</application>

该方法onReceive只需调用另一个方法toggleState(更改 wifi 状态),然后更新小部件图像(从关闭图像到打开图像,反之亦然)。

显然,如果小部件在主屏幕上实际上未处于活动状态,则调用两个方法 toggleState 和 updateWidget (以及完整的 onReceive )是无用的。

所以,只有当我的小部件有效地放置在主屏幕上时,我才想要我的onReceive调用..有办法做到这一点吗?:)

提前感谢您的回答

4

1 回答 1

2

为什么不调用您的广播接收器?这就是在您的进程/活动未运行时调用广播接收器的重点。

如果您只想在特定时间调用它,则必须在小部件的代码中注册它,并在您不想接收广播时取消注册它。

于 2011-01-12T21:21:35.887 回答