在后台线程中启动可运行

迈克·巴克斯特

据我所知,我实现了一个在新线程上创建的可运行对象。但是,该线程似乎未在后台运行,并且在可运行内部执行的操作使UI停止执行繁重的操作。

见下文:

custListLoadThread = new Thread(loadRunnable);
custListLoadThread.run();

private Runnable loadRunnable = new Runnable()
{
    @Override
    public void run()
    {
        android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);

        Gen.popup("TEST"); // Creates a toast pop-up.
        // This is to know if this runnable is running on UI thread or not!

        try
        {               
            customers = Db.BasicArrays.getCustomers(CustomApp.Session.businessCode, empId);

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    populate();
                    setCustListVisible(true);
                    loading = false;
                }
            });
        }
        catch (final Exception ex)
        {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Gen.popup(ex.getMessage());
                }
            });
        }
    }
};

但是,此代码未在后台运行,它似乎仍在UI线程上运行。我已经放置了这一行Gen.popup("TEST");来确保这一点(toast在非UI线程中调用弹出窗口会导致错误)。

关于为何此可运行对象不在后台运行的任何想法?

史蒂夫·M
custListLoadThread = new Thread(loadRunnable);
custListLoadThread.start();

您需要启动线程,而不是在当前线程中调用run()方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++ 11中在后台运行线程

来自分类Dev

iOS使线程在后台运行

来自分类Dev

在C ++ std :: vector之外的线程中启动可运行对象

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

在后台线程中运行处理程序消息

来自分类Dev

在后台线程中运行的可编辑任务队列

来自分类Dev

自动启动Python脚本并在Ubuntu中在后台运行

来自分类Dev

在后台线程上运行“异步”方法

来自分类Dev

Grails-在后台运行TCP线程

来自分类Dev

强制SKPaymentQueue在后台线程上运行

来自分类Dev

线程似乎不在后台运行

来自分类Dev

在后台线程iOS上运行Pusher

来自分类Dev

强制SKPaymentQueue在后台线程上运行

来自分类Dev

Chrome启动后开始在后台运行

来自分类Dev

在后台线程中监听事件

来自分类Dev

在后台线程中更新托管对象

来自分类Dev

在后台线程中更新托管对象

来自分类Dev

立即停止线程中的可运行对象

来自分类Dev

在后台线程中运行GC.Collect可以吗?

来自分类Dev

什么样的事情可以导致viewWillLayoutSubviews在后台线程中运行?

来自分类Dev

PagingData库中默认情况下是否在后台线程上运行PagingData?

来自分类Dev

重新启动在后台运行的程序,仍然使它从stdin中消耗

来自分类Dev

在后台在JAVA中运行BASH命令

来自分类Dev

在后台脚本中运行busybox netcat?

来自分类Dev

在NativeScript中在后台运行任务

来自分类Dev

使循环在后台C ++中运行

来自分类Dev

在后台python中运行GPIO进程

来自分类Dev

可运行,线程,RunOnUIThread