【发布时间】:2017-06-12 18:44:31
【问题描述】:
我有一个使用 Xamarin(跨平台)开发的应用程序,现在运行良好!!但总是需要互联网连接。 如果互联网连接失败,我的应用程序会意外关闭。我想控制这个。 首先我有“AzureDataService”类:
public class AzureDataService
{
//Conexion to backend
public MobileServiceClient MobileService { get; set; }
//Object of "Ficha" class.
IMobileServiceSyncTable<Ficha> tablaFicha;
public async Task Initialize()
{
if (isInitialized)
return;
MobileService = new MobileServiceClient("http://linkbdd");
//Save data in a local DB, later upload with internet connection
const string path = "bbddMuestra.db";
var store = new MobileServiceSQLiteStore(path);//Create DB
store.DefineTable<Ficha>();
//async initialization
await MobileService.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler());
//Inicializate table
tablaFicha = MobileService.GetSyncTable<Ficha>();
isInitialized = true;
}
//Here get data
public async Task<IEnumerable<Ficha>> GetData()
{
await Initialize();
await SyncFicha();
//Select data...
return await tablaFicha.OrderBy(a => a.Id).ToEnumerableAsync();
}
public async Task SyncFicha()
{
await tablaVehiculos.PullAsync("Ficha", tablaFicha.CreateQuery());
await MobileService.SyncContext.PushAsync();
}
“AzureDataService”类结束。现在是实现 AzureDataService 时的类。
public partial class ListaFichas : ContentPage
{
public static ObservableCollection ficha;
public ListaFichas ()
{
InitializeComponent ();
ficha = new ObservableCollection();
}
protected async override void OnAppearing()
{
base.OnAppearing();
ficha.Clear();
//Next line get data from previous method of class "AzureDataService"
var ligas = await App.AzureService.GetData();
foreach(var item in ligas)
{
Ficha fi = item;
ficha.Add(fi);
}
//Here bind listview with data that previous get
lsvFichas.ItemsSource = ficha;
}
请帮助我。我想显示一个 Display 或 DisplayActionSheet 来通知用户......但绝不会意外关机。 谢谢!...
【问题讨论】:
-
UWP 社区工具包有一个名为
NetworkHelper的HelperClass,它有一个方法NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable,如果yes你有互联网连接。您可以使用它并根据特定要求进行处理。 -
有一个James开发的跨平台插件Connectivity。此外,如果无法连接,您始终可以使用 try/catch 获取超时异常。无论如何,您都应该这样做,因为任何连接标志都可能是错误的。我经历了很多次在未连接时实现连接,反之亦然
标签: c# azure xamarin uwp xamarin.forms