Je l'ai fait ce récepteur wifi où je veux faire une action lorsque le wifi est activé ...Android Wifi Récepteur radio réponse tardive
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;
}
}
... et ceci est mon manifeste pour le récepteur ..
<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>
... mais le récepteur effectue la tâche trop tard (environ 10-60 secondes ou plus) à partir de la commutation wifi.
Où est mon erreur? Il existe une autre méthode pour faire cela sans utiliser un service?
Pouvez-vous essayer STATE_CHANGE au lieu de WIFI_STATE_CHANGED? Je ne suis pas sûr à 100% que cela réduise le temps, mais dans mes applications je l'utilise donc peut-être essayer – PsyGik
Aussi, pouvez-vous poster des journaux où exactement cela prend du temps pour exécuter la tâche? – PsyGik
il reçoit l'intention du système en retard je pense. Maintenant, j'essaie STATE_CHANGE –