2016-08-05 33 views
1

我正在开发一个应用程序,其中我正在拍摄一些照片以及一些信息,然后将整个照片上传到服务器。我正在上传文件以响应按钮点击,但只有在互联网正常工作时才会发生。因此,如果互联网无法正常工作,并且想要在设备连接到互联网后立即自动将其上传到服务器,我想在日后安排日期上传任务。在android中调度文件上传的最佳方式是什么?

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

预先感谢您!

回答

1

您是否使用ConnectivityManager来监视Monitoring the Connectivity Status?无线网络可用时您可以收到广播事件并恢复/开始上传。

从Android文档:

确定是否有Internet连接

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

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

确定您的Internet连接类型

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之间移动时都会触发此广播。因此,仅当您先前暂停更新或下载才能恢复广播时,最好监控此广播。在开始更新之前检查互联网连接通常是足够的,如果没有,则暂停进一步更新,直到连接恢复。

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

下面是另一个很好的资源:

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

相关问题