如何从慢速数据库连接中修复丢帧?

时间:2017-04-18 14:00:40

标签: java android

var addressInputElement = $('#yourInputElementId');
addressInputElement.on('focus', function () {
  var pacContainer = $('.pac-container');
  $(addressInputElement.parent()).append(pacContainer);
})

我有一个Android应用程序,我一直在工作,它打两个不同的数据库。一个数据库在现场,是我们的,并且是超快速的,而另一个数据库是异地的旧数据库系统。我使用过Async,现在我正在使用java线程(我觉得它们更容易使用,而且更有用)。我只是想知道在用户登录时是否有办法在连接到数据库时停止这些丢帧,因为这会在提交登录按钮时产生延迟,然后跳过进度微调器。滞后时间约为2秒,通常会下降约300帧。

1 个答案:

答案 0 :(得分:0)

我猜测以下connectionThread

            connection.start();
            try {
                connection.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

如果是这样,那么问题就很明显了。当您致电join()时,您会阻止UI线程。这就是导致“滞后”的原因。如果你想避免滞后和帧丢失,你一定不能导致UI线程阻塞。

解决方案是这样的:

  1. 监听器应该启动线程(或其他),将UI置于“等待验证”状态,然后返回。
  2. 线程应建立数据库连接,验证凭据,然后使用runOnUiThread使UI脱离“等待验证”状态。
  3. 如果用户在“等待验证”时单击该按钮,请忽略它。
  4. 后台线程可以更新UI以指示进度。并且需要向用户指示验证步骤已通过或失败。