2013-06-12 39 views
2

上次我使用以下編碼來運行後臺服務。需要運行服務,同時設備有WiFi /數據連接

Intent intent = new Intent(InitActivity.this, GetService.class); 
PendingIntent pintent = PendingIntent.getService(InitActivity.this, 0, intent, 0); 
Calendar calendar = Calendar.getInstance();   
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);     
alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 50 * 1000, pintent); 
return getZipInfo.toString(); 

爲了提高性能,我想在設備連接WIFI /數據連接後運行我的後臺服務。爲了說清楚,如果設備沒有連接wifi /數據連接,我的後臺服務將無法正常運行。一旦連接wifi /數據連接,它將立即運行。

回答

5

要檢查無線網絡連接,您可以使用此

ConnectivityManager connManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

if (mWifi.isConnected()) { 
// Do whatever 
} 

要執行的代碼,只要在WiFi連接,你必須註冊Brodcast Recevier

註冊接收

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); 
registerReceiver(broadcastReceiver, intentFilter); 

在你的接收器類中,這樣做

@Override 
public void onReceive(Context context, Intent intent) { 
final String action = intent.getAction(); 
if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) { 
    if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)) { 
     //do stuff 
    } else { 
     // wifi connection was lost 
    } 
} 

正如下面提到的,不要忘記添加的權限在AndroidManifest.xml中

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
相關問題