java - 如何在 Android 中使用非 UI 线程(不影响 UI 线程)调用方法

标签 java android multithreading

1.单击按钮时,我正在从显示在 Android ListView 中的数据库中获取一些数据。

2.每当后台进程运行时,它都无法正常工作。我已经搜索了它在主 UI 线程中运行的代码,这就是我的数据库数据未正确接收的原因。

3.我想在 UI 线程之外运行此代码。(普通线程或异步任务)

4.请帮助我如何做到这一点。

我想在非 UI 线程中运行的代码:

private void output() 
{       
                            if(Popup__output.equals("All"))
                            {
                          //for delete a item in List view
                            helper.open();

                            new Handler().post(new Runnable() 
                            {

                                @Override
                                public void run()
                                {
                                    cur = helper.getCategory(Popup__output,Sharedemail);

                                    myCursorAdap = new Cursoradapterfor__page(Page1_Landing.this, cur);

                                    List.setAdapter(myCursorAdap);

                                     popupWindowvariable.dismiss();
                                }


                            });

                            }
}

最佳答案

为了更好,您可以使用 android AsyncTask,您可以在其中获取数据 doInBackground() 方法和 UI 工作,如设置适配器和关闭 progressview 必须在 UI 上完成-thread 所以 AsyncTask 为您提供 onPostExecute() 方法,您可以在其中执行 UI 相关操作。

有关AsyncTask的更多详细信息.

关于java - 如何在 Android 中使用非 UI 线程(不影响 UI 线程)调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844647/

相关文章:

c# - Java 相当于 C#'s "internal”

java - 如何在java-8中查找流类型

android - 使用 GoogleApiClient 的定位后台服务

安卓通知图标

java - 多线程和队列

java - Java 中原子变量对锁的惩罚

c++ - 编译 boost 时 `threading=multi` 到底做了什么?

java - 在 JDK1.7 上使用修改日期对文件数组进行排序时出现 IllegalArgumentException

java - 何时创建辅助方法和单独的文件

sql - Android的SQLiteStatement(准备好的语句)是线程安全的吗? IE。 "bind*, bind*... execute"是原子的吗?