在android中安排文件上传的最佳方法是什么?

时间:2016-08-05 18:13:39

标签: android job-scheduling

我正在开发一个应用程序,其中我正在拍摄一些照片以及一些信息,然后将整个上传到服务器。我正在上传文件以响应按钮点击,但它只在互联网工作正常时才会发生。因此,如果互联网不起作用,我希望安排日期上传任务,以便稍后在设备连接到互联网时自动将其上传到服务器。

我已经通过JobScheduler API,但问题是它不支持低于5.0的Android设备(API 21),我的要求是将此应用程序构建到API 17.因此需要您的建议和任何API相同。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用ConnectivityManager来监控Monitoring the Connectivity Status?当wifi可用时,您可以收到广播事件并恢复/开始上传。

  

来自Android文档:

确定您是否有互联网连接

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

确定您的互联网连接类型

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

监控连接的变化

只要连接详细信息发生更改,ConnectivityManager就会广播CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE")操作。您可以在清单中注册广播接收器以收听这些更改并相应地恢复(或暂停)您的后台更新。

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

设备连接的更改可能非常频繁 - 每次在移动数据和Wi-Fi之间切换时都会触发此广播。因此,只有在您之前暂停更新或下载以恢复广播时,才能监控此广播。在开始更新之前,通常只需检查Internet连接即可,如果没有,则暂停进一步更新,直到连接恢复为止。

此技术需要切换您在清单中声明的​​广播接收器,这将在下一课中介绍。

这是另一个很好的资源:

http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/