2013-06-12 60 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" /> 
相关问题