【问题标题】:Delay between One Activity to Another Activity一项活动与另一项活动之间的延迟
【发布时间】:2012-10-31 05:03:40
【问题描述】:

我在 Android 中开发了一个应用程序。其中包含如此多的数据(字符串)和图像。字符串数据来自database,图像来自/res 文件夹。

In My Application First Activity 显示书籍的类别。然后我选择其中任何一个,然后跳转到下一个活动,该活动显示所有书籍图像和所选类别的简要描述,这些所有数据都来自具有查询操作的数据库,并使用ArrayAdapter 填充自定义列表视图。这些正在工作并显示我想要的所有东西。

但问题是当我从一个活动中单击类别时,显示第二个活动(所选类别的详细信息)需要超过 1 分钟的时间。所以,这里的用户被卡住了。这对我的应用程序不利。

那么有什么办法可以解决这些问题或任何想法来显示一个活动到第二个活动之间的活动加载过程吗?

提前致谢。

请帮我解决这些问题。

【问题讨论】:

  • 首先将问题中的大写改为小写...
  • 尝试延迟加载!一次只加载 10 或 20 个项目,然后当用户向下滚动时,您可以将更多项目添加到列表中。
  • 同意@Ashwani,不要在onCreate()写复杂的代码。

标签: android listview android-activity delay


【解决方案1】:

使用 AsyncTask 作为

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


        @Override
        protected void onPreExecute() {
            //put a preloder
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(String... arg0) {
            // TODO Auto-generated method stub

            find data from database

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            dismiss preloader
                            set adapter here
            super.onPostExecute(result);

        }

    }

打电话 oncreate as new My_Game_Task().execute(); 这将立即显示下一个活动并显示预加载器

【讨论】:

  • 我也使用 AsyncTask 但问题依旧。
  • 为什么会得到这么多赞? @SanketKachhela 在单独的线程中执行加载的第一部分是正确的,但加载 all 数据几乎肯定不是您正在寻找的答案。将所有数据加载到内存中效率低下并且通常是不必要的......您应该尝试“懒惰地”加载数据(即只加载将在开始时显示的内容,然后您可以在以后需要时动态加载内容) .这个链接可以让你开始延迟加载......那里也有几个开源实现。 goo.gl/ssTX7
【解决方案2】:

首先,您在哪里测试应用程序。如果它在模拟器上,然后在实际设备上检查它,您就会知道实际发生了多少延迟。! 我有类似的问题,它在模拟器上需要几分钟,但在实际设备上运行得非常好。显示只需 1 秒..

【讨论】:

  • 等待一个活动切换到另一个活动的时间仍然非常、非常
  • 但考虑到你加载的图像数量,我认为它不会花很长时间。如果你有大约 2 个整个页面背景,大约 20-30 个图像要加载加上大约 40-50 个视图加载和一些要在页面加载时完成的计算肯定会花费这么多时间..我知道这实际上是很长的时间......我对性能增强和内存管理很天真,所以对我来说没关系..但我会喜欢了解更多信息
  • 等待图片加载的时间不长,但阻塞UI线程的时间很长……有区别!当你阻塞 UI 线程时非常明显(即一个按钮保持选中状态,整个布局保持不变等。最好让布局立即响应,然后让图像一张一张动态加载......这样用户就可以实际看到正在取得的进展,并能够在 UI 发生时对其进行操作。
  • 同意!所以有什么办法做到这一点..?因为正如我所说,我有很多图像要加载,它对内存也有很大的影响..并且使用动画.. android 提供的那个对我有任何帮助吗?我正在使用动画逐个加载活动 1 的部分。
【解决方案3】:

试试这个,它会在执行任何其他操作之前延迟一秒,

  try {
    Thread.sleep(1000);
      } catch (InterruptedException e)
      {
    e.printStackTrace();
       }

【讨论】:

  • (1) 请正确缩进你的代码,(2) 你永远不应该,永远,从 UI 线程调用 Thread.sleep...它会阻塞整个申请!
猜你喜欢
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多