Android 计划用户连接到internet时要执行的脱机任务

Android 计划用户连接到internet时要执行的脱机任务,android,caching,android-jobscheduler,Android,Caching,Android Jobscheduler,在我的应用程序中,我正在进行脱机缓存,我希望在用户连接到internet时安排要执行的脱机任务。我找到了用于此的API,但它仅支持API级别21。对于API小于21的应用程序,是否有其他JobScheduler方法可以帮助我安排用户连接到internet时要执行的任务?制作广播接收器接收连接更改的步骤 public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onRe

在我的应用程序中,我正在进行脱机缓存,我希望在用户连接到internet时安排要执行的脱机任务。我找到了用于此的API,但它仅支持API级别21。对于API小于21的应用程序,是否有其他JobScheduler方法可以帮助我安排用户连接到internet时要执行的任务?

制作广播接收器接收连接更改的步骤

public class NetworkChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        final android.net.NetworkInfo mobile = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            // Do something

            Log.d("Netowk Available ", "Flag No 1");
        }
    }
}
并在清单中添加权限

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

有几种方法可以在棒棒糖前运行“作业”

如前所述,您可以使用JobSchedulerCompat库,但该库与默认的棒棒糖API相比有很大的不同:

在棒棒糖上,所有应用程序的作业都会一次进行批处理和调度。但是,库无法访问其他应用程序数据,因此无法使用库合并来自两个不同应用程序的作业

您可能希望尝试的另一个选项是AlarmManager API。此API可用于调度作业,但一个区别是AlarmManager除了运行作业的计时之外没有其他约束

由于KitKat,AlarmManager API在未使用“精确”方法调度作业时也会对作业进行批处理。在KitKat作业未成批之前

如果您的目标是同步数据,那么同步适配器API可能会很有用:

参考文献:


Android Lollipop的作业调度器到api 10+

的一个后端口,您可以使用,它符合您描述的需要,是一个工作示例。它在内部使用JobScheduler,高于21,低于21,它使用了一些Google专有技术

U不理解我的问题..我知道如何检查连接更改..我想知道API小于21时JobScheduler的替代方法..替代方法是自己制作API,首先,您需要获得连接更改,然后在接收广播时执行您的工作当前我正在使用的是一个处理程序,该处理程序每秒检查网络连接是否存在,并且无论何时网络连接存在,它都会执行任务..示例发布注释..您的答案很好..我使用广播接收机。。很高兴你能帮我做这件事。。目前,我所做的允许用户进行脱机操作的方法是使用一个处理程序,该处理程序每秒检查网络连接是否存在,并且每当网络连接存在时,它都会执行任务。例如发布评论。假设用户脱机时,他试图发布评论,则该评论将在internet上发布连接在用户的设备上。但对于tht,我必须每秒使用处理程序检查网络连接是否存在。如果您能帮助我,我将非常高兴。。