2

基本上我需要我的应用程序在建立与网络的连接时向服务器发送一些数据,并且它必须在后台。就是这样。

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

有什么建议甚至更好 - 关于最佳方式的示例?

谢谢你。

4

1 回答 1

8

broadcast receiver为此,您可以使用 a 。在 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>

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
        }

    }
}

希望这可以帮助!

于 2012-05-20T17:50:58.070 回答