android - 该应用程序显示即使在后台线程中执行了操作,也在主线程中做了过多的工作

标签 android multithreading performance android-asynctask worker-thread

嗨,我每次执行查询时都会在日志中收到此消息。但是查询仅在后台线程中执行,并且表没有更多的500行,而且我始终会应用限制100。
请不要简单地给出一些链接,并说这个问题已经回答了。

因此,我在SO中阅读了很多答案。但是仍然没有解决我的问题。有人可以给我适当的理由或解决我的问题的方法吗?

编舞:跳过98帧!该应用程序可能在其主线程上做过多的工作。

以下是我的可运行类,我像new Thread(new MessageLoaderThread(limit))。start();一样调用它。

private class MessageLoaderThread implements Runnable {

        int limit;
        ArrayList<MESSAGE_HEADER> result;

        public MessageLoaderThread(int limit) {
            this.limit = limit;
        }

        @Override
        public void run() {

            showProgressRing(true);

           result = Helper.getRows("Select * from TABLE_NAME LIMIT "+limit);

                    if (result != null) {
                        int count = result.size();

                        if (count > 0) {
                            firstVisibleMessageSeqId = result.get(0).getsequenceId();
                            lastVisibleMessageSeqId = result.get(count - 1).getsequenceId();
                        }
                    }

            if (result != null && result.size() > 0) {
                updateAdapter(result);
            }
            showProgressRing(false);
        }
    }

谢谢

最佳答案

我知道您已经阅读了很多问题。您是否尝试过使用AsyncTask?它是Android中多线程的默认设置。

尝试不要在线程内更新适配器。当您更改某些 View 时,Android会执行一些动画。等待线程完成,然后更新 View 。

关于android - 该应用程序显示即使在后台线程中执行了操作,也在主线程中做了过多的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718398/

相关文章:

python - Whoosh 有多快?

ruby-on-rails - .exists 之间的性能差异?和.where.present?

android - 向上滑动动画但 wrap_content

android - 滑动图像加载超时增加

c++ - 以最便宜/最少侵入的方式自动更新一点?

python - 如何在线程中通过变量调用方法?

mysql - 需要微调我在 varchar 列上有索引的 mysql 查询

android - java.io.File 无法转换为 org.gradle.api.artifacts.Configuration

java - 安卓 : Need to create Shared Preferences object in c++ NDK and Store some Boolean value

java - 多线程中的死锁示例