Reputation:
Basicly I need that my app sends some data to a server when the connection to the network is established and it has to be in the background. That's it.
Is there a way that my service is automaticly started when connection is made? Or should I use regular Service which tests the connection and run this service in something like 30min intervals? Should I use something like the AlarmManager to check for the connection? This seems as a waste of the resources and as far as I'm aware Android can stop services if resources are needed.
Any suggestions or even better - samples on what is the optimal way?
Thank you.
Upvotes: 2
Views: 2936
Reputation: 4676
You can use a broadcast receiver
for this purpose. See this question on SO.
You can check if internet connection has been established, there is no need to check after regular intervals.
(Quoting from the link I have mentioned earlier)
<receiver android:name=".ReceiverName" >
<intent-filter >
<action android:name="android.net.wifi.STATE_CHANGE" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
And
public class ReceiverName extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
if (cm == null)
return;
if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
// Send here
} else {
// Do nothing or notify user somehow
}
}
}
Hope this helps!
Upvotes: 8