android - 需要创建一个在互联网可用时上传数据的后台服务

标签 android broadcastreceiver android-broadcast

我有一个个性化的提要,可以选择对评论点赞。当用户点击“赞”按钮时,应用程序检查互联网连接,如果互联网可用,则 api 命中成功,如果互联网出现故障,comment_id 将存储在 db 中。我希望当互联网恢复时,应该使用这些 comment_id 进行 api 调用。

我试过广播接收器,但在改变互联网连接时广播接收器没有初始化或唤醒。

这是 connectivityReceiver 代码。

public class ConnectivityReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();

    Log.d("LLLL",""+isConnected);
   }
}

这是我的 list 文件。

<receiver
        android:name=".backgroundServices.ConnectivityReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>

最佳答案

要检查互联网,您可以使用此功能。

public boolean hasInternet() {
ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
    NetworkInfo[] info = connectivity.getAllNetworkInfo();
    if (info != null)
        for (int i = 0; i < info.length; i++)
            if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                return true;
            }
}
return false;}

如果互联网正常,此函数将返回 true。 一旦您从执行连接的功能中获得真实信息,请制作一个计时器来一次又一次地检查互联网。

关于android - 需要创建一个在互联网可用时上传数据的后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810485/

相关文章:

android - 将 TensorFlow python 代码与 android 应用程序一起使用

java - 无法解析 R.array.items 中的 "array"(android studio)

android - 如何在java/Android中的选项卡之间使用 Intent ?

android - 从 IntentService 使用 ContentProvider

android - 应用程序进入后台时取消注册广播接收器

android - 更新从广播接收器调用的 ListView 的方法不起作用

android - 将 Maven Artifact 的不同包装附加到部署?

android - 铃声模式更改监听器广播接收器?

android - 当 Android 中的 Activity 内容更改时小部件不更新

android - BroadcastReceiver 和 IntentFilter 有什么区别?