2011-01-11 90 views
0

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

<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状态),然后更新微件图像(从OFF到ON的图像或反之亦然 )。

显然,这两种方法toggleState和updateWidget(等完整的onReceive)是无用的,如果小部件是不是在主屏幕上实际活跃的通话..

所以,我想我的onReceive称为只有当我的小部件有效地放在主屏幕上..有一种方法可以做到这一点? :)提前答案

+0

你可以编辑你的问题,以更具体地说明你如何设置这个`BroadcastReceiver`? – CommonsWare 2011-01-12 00:52:53

+0

你是对的,对不起:) ..代码补充。 – Salv0 2011-01-12 21:05:01

回答

2

感谢为什么不是你的广播接收器被称为?当您的流程/活动未运行时,这就是广播接收器的要点。

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

相关问题