2013-03-09 2 views
0

Я пишу приложение для Android, которое подключается к определенной сети WIFI. Сложная часть заключается в том, что когда пользователь подключается вручную к другой сети или отключает WIFI или потерянные соединения (поскольку пользователь уходит) ... Мне нужно забыть эту сеть (removeNetwork).Каков наилучший способ выполнить фоновый процесс после определенного действия?

Мой вопрос следующий: Как я могу это сделать?

  • Нужно ли создавать службу, которая работает в фоновом режиме, и каждые 5 минут проверять, что является статусом WIFI?
  • Есть ли способ «крюка» для запуска класса, метода, функции при изменении WIFI определенного статуса?
  • Каков наилучший способ решения этой проблемы?

Действительно спасибо!

ответ

2

Я бы посоветовал вам реализовать приемник вещания в вашем приложении, может активироваться всякий раз, когда есть какие-либо изменения в отношении подключения к сети или Wi-Fi, а также в методе onRecieve() этого широковещательного приемника вы можете выполнять любую обработку всякий раз, когда соединение теряется.

это идет в манифесте

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

и это код Java. Публичный класс WifiReceiver расширяет BroadcastReceiver { закрытый финал String TAG = "WifiReceiver";

@Override 
public void onReceive(Context context, Intent intent) { 
    int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); 
    String wifiStateText = "No State"; 

    switch (wifiState) { 
    case WifiManager.WIFI_STATE_DISABLING: 
     wifiStateText = "WIFI_STATE_DISABLING"; 
     break; 
    case WifiManager.WIFI_STATE_DISABLED: 
     wifiStateText = "WIFI_STATE_DISABLED"; 
     break; 
    case WifiManager.WIFI_STATE_ENABLING: 
     wifiStateText = "WIFI_STATE_ENABLING"; 
     break; 
    case WifiManager.WIFI_STATE_ENABLED: 
     wifiStateText = "WIFI_STATE_ENABLED"; 
     break; 
    case WifiManager.WIFI_STATE_UNKNOWN: 
     wifiStateText = "WIFI_STATE_UNKNOWN"; 
     break; 
    default: 
     break; 
    } 
    MyLog.d(TAG, "onReceive Broadcast > WiFiState: " + wifiStateText); 
    MyLog.d(TAG, "onReceive Broadcast > Time: " + new Date()); 
} 

} и не забудьте добавить следующее разрешение

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
Смежные вопросы