0

我在理解如何解决这个问题方面存在问题,因为我对xamarin和android都是新手。根据连通性在后台上传数据

我的问题是以下几点:我需要开发一个android应用程序,它将事物的照片上传到其他服务器。令人困惑的部分是用户的连接非常差,所以我需要不断检查互联网连接,并在互联网存在时尝试上传照片。该检查需要在后台完成,因此用户不会注意到任何滞后。

当用户点击“保存”时,应用程序应该将照片和元数据保存到本地数据库或文件(json或sqlite),并在互联网存在时上传它们。

我已经尝试了许多不同的方法,但由于缺乏对android线程和服务如何工作的理解而失败。 (绑定服务,Foregroundservice,SQLite)

因为我没有太多时间研究和测试所有可能性,所以我问你们:我该怎么做?

谢谢您的理解。

回答

0

有一个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); 
      } 
    } 
+0

是的,但如果连接是在整个时间,这将工作吗?那么android终止线程呢? 我认为这一定要用服务来完成。 – Mightee

+0

这只是在互联网状态改变时才会执行,如在线到离线和离线到在线。当你启动你的应用程序时,它也会检查你的网络状态。所以,你不需要为初始时间编写代码。 –