从天蓝色移动应用程序简易表格获取表格时,Android应用程序冻结

时间:2018-12-26 15:07:35

标签: java android azure azure-mobile-services

如何使用移动应用程序SDK从Azure简易表中获取过滤的数据? 我已经连续几天学习了教程(ToDoItem正常工作),参考文档等。当我尝试查询/过滤表时,我的应用程序冻结。

在我的主要活动之外,没有任何方法:

\"

在onCreate中:

MobileServiceClient mClient;
MobileServiceTable<RouterTable> mRouterTable;

我要在后台线程中查询表的类:

try {
    mClient = new MobileServiceClient(
            "https://azurept.azurewebsites.net",
            this);
    mRouterTable = mClient.getTable(RouterTable.class);
} catch (Exception e) {
    e.printStackTrace();
}

我在单击按钮时进行查询的方法:

public class GetMac extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        try {
            Log.i(TAG,"Start Query");
            List<RouterTable> results = mRouterTable
                    .where()
                    .field("serial").eq("101")
                    .select("mac")
                    .execute()
                    .get();
            Log.i(TAG,"Query Complete");
            return results.get(0).toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

点击按钮后,这是我的日志猫:

private void onProvisionClicked() {
    try {
        mac = new GetMac().execute().get();
        Log.i(TAG, mac);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

就是这样!我希望看到日志“查询完成”,依此类推...但是从没有。

如何查询Azure简易表以从中获取数据?

更新-工作:

2018-12-26 07:33:58.474 8068-8112/com.solvednetworks.cptool I/MainActivity: Start Query
2018-12-26 07:33:58.703 8068-8104/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([B)V (light greylist, reflection)
2018-12-26 07:33:58.967 8068-8104/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getAlpnSelectedProtocol()[B (light greylist, reflection)

Logcat:

public class GetMacTask extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        try {
            Log.i(TAG,"Start Query");
            List<RouterTable> results = mRouterTable
                    .where()
                    .field("serial").eq("101")
                    .select("mac")
                    .execute()
                    .get();

                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        mac = results.get(0).getMac();
                        Log.i(TAG,"Query Complete - MAC: " + mac);
                    }
                });
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

private void onProvisionClicked() {
    try {
        new GetMacTask().execute();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

0 个答案:

没有答案