0
내가 와이파이 사용할 때 작업을 수행하려면이 와이파이 수신기를했던
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 초 정도) 작업을 수행합니다.
어디에서 오류가 있습니까? 서비스를 사용하지 않고도이 작업을 수행 할 수있는 또 다른 방법이 있습니까?
WIFI_STATE_CHANGED 대신 STATE_CHANGE을 (를) 사용해 볼 수 있습니까? 100 % 확신 할 수는 없지만 시간을 줄이는 것은 내 응용 프로그램에서 사용하기 때문에 시도해보십시오. – PsyGik
또한 작업을 실행하는 데 시간이 걸리는 곳을 정확하게 게시 할 수 있습니까? – PsyGik
늦게 내 생각에 시스템의 의도가 나타납니다. 이제 STATE_CHANGE에 도전 해 봅니다. –