使用 OSMDroid 在 Java 应用程序中显示被冻结,但应用程序在后台运行

问题描述 投票:0回答:0

我正在编写一个用于 VFR 导航的应用程序。该应用程序使用OSMDroid(当前版本6.1.8)。 基本上该应用程序可以工作,但有时(不能说在什么条件下!)该应用程序“冻结”。

使用日志文件,我可以看到,应用程序可以运行,但整个显示被冻结......
绘制元素的函数被调用,所有应用程序的函数都正常工作,并且在日志文件中没有发现任何异常。

但是显示屏停止工作(不仅 OSMDroid 的地图不会更新,其他元素也不会更新)。我可以重新启动应用程序,其他应用程序可以工作,但我的应用程序不能。
该应用程序不会响应用户交互(点击按钮或类似操作),并且屏幕上的所有元素都不会刷新。
尝试强制元素刷新不会给出任何结果...

我编写了一个线程,每 500 毫秒刷新一次屏幕,以便应用程序的其余部分应该“单独”工作。
我的代码:

    contentView = findViewById(android.R.id.content).getRootView();
    updateThread = new Thread(new Runnable()
    {
      @Override
      public void run()
      {
        while(1)
        {
          MainActivity.this.runOnUiThread(new Runnable() {
            public void run() {
              try
              {
                periodicalScreenUpdate(); // this will update the elements on screen...
                Logger.debug("Invalidate screen");
                contentView.invalidate();
              }
              catch(Exception e)
              {
                Logger.notice(e);
              }
            }
          }
          Thread.sleep(500);
        }
      });
    }

有人知道可能是什么问题以及我该如何解决它吗?

非常非常感谢!
卢卡

java android freeze osmdroid
© www.soinside.com 2019 - 2024. All rights reserved.