2016-07-05 43 views
-1

任何帮助,非常感谢。我使用适用于Android Studio的Microsoft Azure Mobile SDK为我的Android应用程序创建了后端。但是,当我尝试从服务器使用查询获取数据时,该应用程序挂起并崩溃。我的代码如下:当Azure SQL查询产生时,Android应用程序崩溃

//The variables 
private MobileServiceClient mClient; 
private MobileServiceTable<Item> table; 

//In onCreate method 
try { 
    mClient = new MobileServiceClient("https://myapp.azurewebsites.net", this); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} 
table = mClient.getTable("MyTable",Item.class); 
try { 
    final List<Item> result = table.execute().get();//----App crashes here 
} catch (MobileServiceException e) { 
    e.printStackTrace(); 
} 
+0

stacktrace说什么? “挂起和崩溃”包含完全零的细节。 – f1sh

+1

那么如果这是主线程执行一个查询并获得像这样的结果将导致NetworkOnMainThreadException。但是你没有发布堆栈跟踪,所以我猜测。一般来说,尽管你不应该在AsyncTask上做一个get()。我希望他们删除电话以阻止用户使用它。 –

+0

您可能会收到NetworkOnMainThreadException。你不应该在主线程上运行网络任务。使用ASyncTask。 您还应该弹出问题中的堆栈跟踪,以便我们可以看到错误。 – apmartin1991

回答

1

@AnshaySaboo有Azure上的两个服务命名Azure Mobile Services(Azure上的经典老门户服务)& Azure Mobile Apps(Azure上的新门户新服务)。根据您的描述,我无法识别您使用了哪种服务。但是,基于构造函数MobileServiceClient(String appUrl, Context context),我认为您使用的是Azure Mobile Apps SDK for Android,而不是Azure Mobile Services SDK for Android

我认为这个问题可能是由于在Azure新门户上创建移动应用服务时,使用Mobile Service SDK for Android造成的。因此,请检查您用作后端的服务以及您用于Android客户端的sdk,并确保您的后端和客户端的服务一致性。

作为参考,有一些资源用于不同的服务。

  1. 开始使用Mobile Services vs Mobile Apps
  2. 如何使用Android客户端库Mobile Services vs Mobile Apps
  3. GitHub上的示例:Mobile Services vs Mobile Apps