android - NetworkType.UNMETERED 与 NetworkType.METERED - PeriodicWork
问题描述
在我的应用程序中,我使用工作管理器进行定期工作。我正在将文件上传到服务器。我有一个按钮单击该按钮显示一个对话框并询问用户 - 上传文件时要使用哪个网络 - 1. Wifi 2. 任何
如果用户点击 wifi 我每 30 分钟上传一次文件,如果用户点击任何我每 1 小时上传一次文件。
以下是我的代码: 1. 如果用户选择 WIFI
PeriodicWorkRequest.Builder wifiWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 30,
TimeUnit.MINUTES)
.addTag("WIFIJOB1")
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.UNMETERED).build());
wifiWork = wifiWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("wifiJob", ExistingPeriodicWorkPolicy.REPLACE, wifiWork);
如果用户选择任何:
PeriodicWorkRequest.Builder mobileDataWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 1,
TimeUnit.HOURS)
.addTag("MOBILEDATAJOB1")
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build());
mobileDataWork = mobileDataWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("mobileDataJob", ExistingPeriodicWorkPolicy.REPLACE, mobileDataWork);
对于任何网络,它都能完美运行,每 1 小时上传一次 apk。但是如果用户选择 Wifi 那么这里就是问题 -
如果用户连接到其他手机的 wifi(比如他正在使用热点),那么我想这里的网络是计量网络,所以它不会上传文件。我只想知道我们的 House 或 office 网络是否默认为 Unmetered 网络。如果假设它没有修复(意味着有些是计量的,有些是未计量的),那么如果用户选择 wifi 并且用户 wifi 被认为是计量的,那么使用此代码将永远不会从他的设备文件中上传。
或者我应该创建另一个任务,例如:
PeriodicWorkRequest.Builder meteredwifiWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 45,
TimeUnit.MINUTES)
.addTag("METEREDWIFIJOB")
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.METERED).build());
wifiWork = wifiWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("meteredwifiJob", ExistingPeriodicWorkPolicy.REPLACE, wifiWork);
因此,如果用户未连接到 wifi 文件将在每 1 小时后上传,如果连接到 wifi(未计量)文件将在每 30 分钟后上传,如果连接到计量 wifi,则文件将在每 45 分钟后上传。
上述逻辑是否有意义创建 3 个单独的任务来上传文件。任何建议将不胜感激。提前致谢
解决方案
如果您只关心是否存在网络连接,请使用NetworkType.CONNECTED
. 如果文件非常大,并且可能会花费用户(因为他们最终将使用昂贵的数据连接),您应该使用NetworkType.UNMETERED
.
推荐阅读
- r - 使用基于当前年份的动态名称系列复制列
- amazon-web-services - 我可以多分区 s3
- ruby - Ruby 反斜杠转义:' \\ \hline' 作为字符串
- r - For循环时间序列以将预测值添加到原始数据框
- angular - Angular DI:将价值令牌注入工厂提供者
- python-3.x - 槌中的Python主题建模错误
- twitter-bootstrap-3 - 引导列内的垂直对齐
- python - Python Matplotlib:绘制二维线而不对 xdata 进行排序
- ruby-on-rails - 如何将宝石导轨 4 升级到导轨 5?
- javascript - 无法在树视图中隐藏根节点 [ExtJS]