Android 连接时在后台发送数据

Posted

技术标签:

【中文标题】Android 连接时在后台发送数据【英文标题】:Android Send data in the background when connected 【发布时间】:2012-05-20 17:44:21 【问题描述】:

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

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

任何建议甚至更好 - 最佳方式的示例?

谢谢。

【问题讨论】:

【参考方案1】:

您可以为此使用broadcast receiver。请参阅this 关于 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
        

    

希望这会有所帮助!

【讨论】:

以上是关于Android 连接时在后台发送数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?

如何保持蓝牙连接后台?

iOS版发送视频(屏幕共享)的数据包在后台UDP连接

在到达某个位置时在 Android 中发送短信

Android客户端连接服务器端,向服务器端发送请求HttpURLConnection

发送 Facebook 私信时在 iOS 和 Android 中设置“to”