根据连接情况在后台上传数据
Upload data in the background depending on the connectivity
我在理解如何解决这个问题时遇到问题,因为我对 xamarin 和 android 都是新手。
我的问题如下:我需要开发一个 android 应用程序,它可以拍摄事物的照片并将它们上传到休息服务器。令人困惑的部分是用户的网络连接真的很差,所以我需要不断检查互联网连接并尝试在互联网存在时上传照片。此检查需要在后台完成,因此用户不会注意到任何延迟。
当用户点击 "save" 时,应用程序应将照片和元数据保存到本地数据库或文件(json 或 sqlite),并在有互联网时上传。
我尝试过许多不同的方法,但由于不了解 android 线程和服务的工作原理而失败了。 (绑定服务、前台服务、SQLite)
由于我没有太多时间研究和测试所有的可能性,所以我问你们:我该怎么做?
感谢您的理解。
有一个 nuget 插件 Xam.Plugin.Connectivity 用于连续检查互联网,您可以在使用此插件时管理您的代码。
对于后台,您需要创建一个后台线程,您可以从 ConnectivityChanged 事件中调用它。
CrossConnectivity.Current.ConnectivityChanged += (object sender, Plugin.Connectivity.Abstractions.ConnectivityChangedEventArgs e) =>
{
if(e.IsConnected){
//your code here for fetching data when internet connected.
//Create task for background process
Task.Run(() =>
{
//your code for background
}).ConfigureAwait(false);
}
}
我在理解如何解决这个问题时遇到问题,因为我对 xamarin 和 android 都是新手。
我的问题如下:我需要开发一个 android 应用程序,它可以拍摄事物的照片并将它们上传到休息服务器。令人困惑的部分是用户的网络连接真的很差,所以我需要不断检查互联网连接并尝试在互联网存在时上传照片。此检查需要在后台完成,因此用户不会注意到任何延迟。
当用户点击 "save" 时,应用程序应将照片和元数据保存到本地数据库或文件(json 或 sqlite),并在有互联网时上传。
我尝试过许多不同的方法,但由于不了解 android 线程和服务的工作原理而失败了。 (绑定服务、前台服务、SQLite)
由于我没有太多时间研究和测试所有的可能性,所以我问你们:我该怎么做?
感谢您的理解。
有一个 nuget 插件 Xam.Plugin.Connectivity 用于连续检查互联网,您可以在使用此插件时管理您的代码。 对于后台,您需要创建一个后台线程,您可以从 ConnectivityChanged 事件中调用它。
CrossConnectivity.Current.ConnectivityChanged += (object sender, Plugin.Connectivity.Abstractions.ConnectivityChangedEventArgs e) =>
{
if(e.IsConnected){
//your code here for fetching data when internet connected.
//Create task for background process
Task.Run(() =>
{
//your code for background
}).ConfigureAwait(false);
}
}