【发布时间】:2016-12-17 17:29:55
【问题描述】:
我已经完成了这个 wifi 接收器,我想在启用 wifi 时执行操作...
public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
WifiManager wManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
if (isWifiEnabled(wManager)) {
new MyTask().execute();
}
}
public static boolean isWifiEnabled(WifiManager wifi) {
if (wifi==null) return false;
if (wifi.getWifiState()!= wifi.WIFI_STATE_ENABLED) return false;
return true;
}
}
...这是我给接收者的清单...
<receiver android:enabled="true" android:name=".receiver.WifiReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...但是接收器从 wifi 切换开始执行任务为时已晚(大约 10-60 秒或更长)。
我的错误在哪里?还有另一种不使用服务的方法吗?
【问题讨论】:
-
你可以试试STATE_CHANGE而不是WIFI_STATE_CHANGED吗?我不能 100% 确定它会减少时间,但在我的应用程序中我会使用它,所以不妨试一试
-
另外,您能否在执行任务所需时间的确切位置发布日志?
-
我认为它接收系统意图较晚。现在我尝试 STATE_CHANGE
标签: android broadcastreceiver android-wifi android-broadcast android-broadcastreceiver