Android连接时在后台发送数据

2 service android

基本上我需要我的应用程序在建立与网络的连接并且必须在后台时将一些数据发送到服务器.而已.

有没有办法在连接时自动启动我的服务?或者我应该使用常规服务测试连接并以30分钟的间隔运行此服务?我应该使用类似AlarmManager的东西来检查连接吗?这似乎浪费了资源,据我所知,如果需要资源,Android可以停止服务.

任何建议甚至更好 - 最佳方式的样本?

谢谢.

Spe*_*ine 8

您可以使用a broadcast receiver来实现此目的.在SO上看到这个问题.

您可以检查是否已建立互联网连接,无需定期检查.

(引自我之前提到的链接)

<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>
Run Code Online (Sandbox Code Playgroud)

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
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!