添加 Azure 后端 table 查询时应用冻结

App freeze when adding azure backend table query

开门见山,这是我的代码:

    private MobileServiceClient mClient;
    private MobileServiceTable<tblClass> mTable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().hide();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if( getIntent().getBooleanExtra("Exit me", false)){
            finish();
            return;
        }

        try {
            mClient = new MobileServiceClient(
                    "https://applink.azurewebsites.net",
                    this
            );
            mTable = mClient.getTable(tblClass.class);

            // when this line added, the app freezes, with no information on the logcat
            List<tblClass> results = mTable
                    .execute()         
                    .get();
            // end of the line

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (MobileServiceException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }

我已经尝试使用此方法将 return 数据添加到列表中

Toast.makeText(this, results.indexOf(0), Toast.LENGTH_SHORT).show();

结果还是一样,应用卡住了 我已经尝试在许多 android 版本(从 4.4 到 7.0)上调试它,有人能告诉我为什么会这样吗?我一个月才学会 android。

更新

这是应用冻结前的最后一个logCat

    07-30 01:50:30.168 24014-24014/id.co.mandiri.e_absenmandiri I/InstantRun: starting instant run server: is main process
    07-30 01:50:30.332 24014-24014/id.co.mandiri.e_absenmandiri W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
    07-30 01:50:30.604 24014-24027/id.co.mandiri.e_absenmandiri I/art: Background sticky concurrent mark sweep GC freed 1973(388KB) AllocSpace objects, 0(0B) LOS objects, 20% free, 1579KB/1983KB, paused 5.293ms total 20.441ms

您 运行 在负责 UI 更新的主线程中查询(换句话说,长时间运行)。您需要使用 AsyncTask、Loaders 或简单地创建一个新的 Thread 实现来启动另一个线程。